我正在尝试创建一个简单的 javascript 程序来读取 keydown 事件并将它们转换为 HTML 画布上的运动。到目前为止,我已经取得了相当大的成功,我对(我假设是)箭头键优先级有一个奇怪的问题。发生的情况是,如果我按住右箭头,然后按下左箭头,那么左箭头会接管。如果我按住左箭头并按下右箭头,则没有任何变化(我移动的块继续向左移动)。我已经切换了读取按键的顺序,但没有成功。
我阅读 keydowns 和 keyups 的代码是这样的:
//Listener for when keys are pressed
window.addEventListener('keydown', function (event) {
keyCodes[event.keyCode] = true;
});
//Listener for keys being released
document.addEventListener('keyup', function (event) {
keyCodes[event.keyCode] = false;
});
然后在这里解释
//movement function
function move () {
if (keyCodes[right]) {
velX = 12.0;
}
if (keyCodes[left]) {
velX = -12.0;
}
};
function update() {
if (keyCodes[right] || keyCodes[left])
move();
posX += velX;
if (!keyCodes[right] && velX > 0)
velX -= gravity;
if (!keyCodes[left] && velX < 0)
velX += gravity;
};
谁能看到,或者有人已经知道,为什么左键优先于右键?
解决了:
修正后的移动功能如下:
function move () {
if (keyCodes[left] && velX > -12.0) {
velX -= 2.0;
}
if (keyCodes[right] && velX < 12.0) {
velX += 2.0;
}
};