如何解决此 if 语句

我有一个对象,我想在按两个键时对角移动。到目前为止它可以工作,但是在释放两个键后,如果我只按一个键,即'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';

});


慕田峪7331174
浏览 91回答 2
2回答

POPMUISE

您应该添加对按键事件的处理。现在 keyPressed 的值永远不会被清除。

翻过高山走不出你

第一次按下后,keysPressed仍保持true前一个键的值。因此,在那之后,情况keysPressed['d']总是true会导致您当前的问题。您应该在回调函数结束时将其更新为 false。keysPressed[event.key] = true;// ....keysPressed[event.key] = false;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript