我发现了类似的线程,但是他们只谈论删除初始延迟,而不是设置延迟。
我有一个游戏,如果按下wasd,它将相应地移动用户,并将其移动到下一个网格坐标。但是,如果用户按住任何wasd键,他们几乎会立即拍摄,而我不希望这样。我试图在机芯上创建一个延迟,如果您快速按下该键,则不起作用,但如果按住该键则无效。我有以下代码:
window.addEventListener("keydown", onKeyDown, false);
function onKeyDown(event) {
var keyCode = event.keyCode;
if (canMove == true) {
switch (keyCode) {
case 68: //d
keyD = true;
canMove = false;
break;
case 83: //s
keyS = true;
canMove = false;
break;
case 65: //a
keyA = true;
canMove = false;
break;
case 87: //w
keyW = true;
canMove = false;
break;
}
setTimeout(function(){canMove = true;}, 400);
}
checkMovement();
}
Run Code Online (Sandbox Code Playgroud)
我的问题:例如,我可以按“ a”并几乎立即缩放地图。我希望它们延迟200-500毫秒,以便它们以稳定的缓慢速度移动。如何解决这个问题?