2013-02-15 150 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的