拿着钥匙的JS有一个延迟

Yan*_*nic 5 javascript html5 html5-canvas

我正在学习JavaScript,我正在尝试编写一个小游戏.当我按住一个键时,我希望我的游戏中的某些内容始终如一地移动.这是我到目前为止提出的:

document.onkeydown = onKeyDownListener;

function onKeyDownListener(evt) {
    var keyCode = evt.which || evt.keyCode;
    if(keyCode == 37) {
        move();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我按下键移动被调用一次,然后有一个暂停,然后暂停移动被重复调用,因为我打算.它是这样的:m ...... mmmmmmmmm当'm'代表移动和'.' 暂停.有没有办法摆脱暂停?

这是一个发生了什么的GIF:

我的问题的GIF

小智 2

你可以试试这个:

document.onkeydown = onKeyDownListener;
var keyDown = false;
function onKeyDownListener(evt) {
   if(evt.keyCode == 37) {
keyDown = true;
   }
}

document.onkeyup = function(evt){
 if(evt.keyCode == 37) {
keyDown = false;
   }
}

setInterval(function(){
if(keyDown){
player.x--;
}
},20)
Run Code Online (Sandbox Code Playgroud)

我知道这并不理想,但我最好的猜测是这是按键检测的问题。这样,只要您按住该键,它就会移动,直到您松开该键为止。