我有一个要在按两个键时沿对角线移动的对象。到目前为止,它仍然有效,但是松开两个键之后,如果我只按一个键(即“ s”),它就会一直沿对角线移动。同时按下两个键如何才能使对象仅沿对角线移动?
let keysPressed = ["d", "s"];
const box1 = document.getElementById("box1");
var box1x = box1.offsetLeft;
var box1y = box1.offsetHeight;
document.addEventListener('keydown', (event) => {
keysPressed[event.key] = true;
if (keysPressed['d'] && event.key == 's') {
box1.style.left = document.getElementById("box1").offsetLeft + 5 + 'px';
box1.style.top = document.getElementById("box1").offsetTop + 5 + 'px';
}
});
答案 0 :(得分:1)
您应该为按键事件添加处理。现在,永远不会清除keyPressed的值。
答案 1 :(得分:0)
第一次按下后,keysPressed
仍保留上一个键的值true
。因此,此后,条件keysPressed['d']
始终为true
,这会导致您当前遇到问题。
您应该在回调函数的末尾将其更新为false。
keysPressed[event.key] = true;
// ....
keysPressed[event.key] = false;