2013-02-15 2 views
0

HTML5 게임에서 화살표 키를 사용할 때 스크롤을 방지하려고합니다. 그것은 당신이 화면에 화살표 키 또는 버튼으로 제어 미로 게임이다,하지만 난 '위로'또는를 누를 때마다 '아래로'키 항상 scrolls.I을 사용하고 있습니다 :javascript가 스크롤을 방지합니다

document.addEventListener('keydown', function(e){ 
    if(e.keyCode === 40) { 
     down(); 
    } else if(e.keyCode === 38) { 
     up(); 
    } else if(e.keyCode === 37) { 
     leftclick(); 
    } else if(e.keyCode === 39) { 
     rightclick(); 
    } 
}) 

는이 가능 자바 스크립트? 내 마우스로 스크롤 할 수 있기를 원하지만 내 키보드에서 화살표 키를 사용할 때가 아닙니다. 내 게임은 http://thomaswd.com/maze입니다. 도와주세요. 감사!

+1

가능한 중복 : //stackoverflow.com/questions/14320634/body-stop-scrolling-after-keydown-keypress-with-jquery) – epascarello

+0

http://stackoverflow.com/a/4770179/410273 – andrewk

답변

2

정상적인 키 동작이 발생하지 않도록하려면 e.preventDefault()을 사용하십시오. 마지막에 e.preventDefault();를 추가 할 수

document.addEventListener('keydown', function(e){ 
    if(e.keyCode === 40) { 
     down(); 
     e.preventDefault(); 
    } else if(e.keyCode === 38) { 
     up(); 
     e.preventDefault(); 
    } else if(e.keyCode === 37) { 
     leftclick(); 
     e.preventDefault(); 
    } else if(e.keyCode === 39) { 
     rightclick(); 
     e.preventDefault(); 
    } 

})

+0

감사합니다. Keypress를 사용하지 않고 작업했지만'e.preventDefault()'를 추가했는데 –

0

시도

+0

이 작동했습니다. 화살표 키를 제외한 모든 키가 비활성화됩니다 .... – jondavidjohn

+0

각 if 문 끝 부분에 있음을 의미합니다. –

1

이 시도 :

document.addEventListener('keydown', function(e) { 
     if(e.keyCode > 36 && e.keyCode < 41) { 
      e.preventDefault(); 
     } 
     if (e.keyCode === 40) { 
      down(); 
     } else if (e.keyCode === 38) { 
      up(); 
     } else if (e.keyCode === 37) { 
      leftclick(); 
     } else if (e.keyCode === 39) { 
      rightclick(); 
     } 
     return false; 
    }, false); 
} 
[본체를 keyDown 후 jQuery로, 키를 누를 때 스크롤 중지] (HTTP의
관련 문제