我正在使用HTML和javascript制作Snake游戏。 游戏通过按箭头键移动蛇来工作。 90%的时间都可以正常工作。但是,有时当我非常快速地输入2个键时,仅注册了一个键。例如,如果我以<10ms的延迟按下向上和向左按钮,则蛇只会向上而不向左移动。
我不确定为什么会这样,所以我不知道从哪里开始修复。
我的事件监听器:
window.onkeydown = function (e){
var keys = {
37: 'left',
38: 'up',
39: 'right',
40: 'down'
}
var dx = 0;
var dy = 0;
switch (keys[e.keyCode]){
case 'left':
dx = -1;
break;
case 'up':
dy = 1;
break;
case 'down':
dy = -1;
break;
case 'right':
dx = 1;
break;
default:
return;
}
是否可以通过将其更改为addEventListener来解决我的问题?
我的另一种理论是浏览器认为我正在同时输入2个键,因此我必须对其进行编码以使输入排队。
还是Javascript在执行逻辑时不读取输入?
有人可以给我一个提示吗?