2013-02-15 107 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(); 
    } 
}) 

这是可能的JavaScript的?我希望它能够使用我的鼠标滚动,但不能在我使用键盘上的箭头键时滚动。我的游戏是在http://thomaswd.com/maze。请帮忙。谢谢!

+1

可能重复: //stackoverflow.com/questions/14320634/body-stop-scrolling-after-keydown-keypress-with-jquery) – epascarello 2013-02-15 18:43:31

+0

http://stackoverflow.com/a/4770179/410273 – andrewk 2013-02-15 18:43:54

回答

2

使用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

谢谢,thi s的工作没有使用按键,但我添加了'e.preventDefault()',它的工作 – 2013-02-15 18:46:48

0

尝试在末尾添加e.preventDefault();

+0

这将禁用除箭头键之外的所有键......每个'if'语句结尾的 – jondavidjohn 2013-02-15 18:46:18

+0

我的意思是 – 2013-02-15 19:44:02

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的