• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 공룡게임 점프 한 번만 되게 하기 질문 드립니다.

공룡게임 점프 한 번만 되게 하기 질문 드립니다.

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #99812

    이미연
    참가자
    안녕하세요. 
    아래코드는, 클릭 유지 시 console.log('내려와'); 콘솔창에 여러번 출력되지만,
    dino.y += 2; 실행은 안 되고 있습니다.
    클릭 유지 시 계속,  if (점프중 == true && dino.y>150){ 내려오면 수가 커지니까 다시 
    dino.y-=3; 가 연속 적용되어 내려오지 못하는 것 같습니다. 도움 부탁드립니다.. 
    if (점프중 == true && dino.y>150){ dino.y-=3;  if (!soundPlayed) {
        jumpSound.play(); soundPlayed = true}}
    if(dino.y<=150){if(dino.y < 280){ dino.y += 2;console.log('내려와');}} 
    if (점프중 == false) {  if (dino.y < 280){ dino.y+=3 }
                                  soundPlayed = false}}
    document.addEventListener('keydown', e=> {
      if ((e.code === 'ArrowUp'|| e.code === 'Space')&& 키눌림 == false) 
      { 점프중 = true;키눌림 = true;console.log('몇번동작')}})
    document.addEventListener('keyup', e => {
      if (e.code === 'ArrowUp' || e.code === 'Space') { 점프중 = false}});
    var 점프중 = false; var 키눌림 = false;     
    byframe(); 
    아래는 다른 방식으로 적용해보았으나,
     function jump() {
      if (!soundPlayed){jumpSound.play(); soundPlayed = true};
      if (dino.y > 150) { dino.y -= 3;console.log('올라와'); } 
      setTimeout(function down(){console.log('내려와'); 
        if(dino.y < 280){ dino.y += 3}}, 400);
    } 제가  setTimeout 사용을 안 하면, JS 동시처리로, 공룡 최후모습 dino.y 280 만 보여져서 
    시간의 텀을 두려 장치하였습니다. 그러나 이 방법 역시 원하는 결과물이 아니였습니다.
    document.addEventListener('keydown', e=> {
      if ((e.code === 'ArrowUp'|| e.code === 'Space')&& 키눌림 == false){ 
          점프중 = true;  jump();키눌림 = true;console.log('몇번동작')}})
    document.addEventListener('keyup', e => {
      if (e.code === 'ArrowUp' || e.code === 'Space') { 점프중 = false}});
       var 점프중 = false; var 키눌림 = false;               }
    byframe(); 
    
    감사드립니다.
    
    
    #99835

    codingapple
    키 마스터
    일단 키를 떼면 바로 점프중을 false로 만드는거같은데
    키 누르고 몇초 정도 지나고 나서 false로 만드는게 좋을듯요
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠