为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决此 if 语句

如何解决此 if 语句

慕田峪7331174 2022-10-08 14:57:36
我有一个对象,我想在按两个键时对角移动。到目前为止它可以工作,但是在释放两个键后,如果我只按一个键,即'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';} });
查看完整描述

2 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

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



查看完整回答
反对 回复 2022-10-08
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

第一次按下后,keysPressed仍保持true前一个键的值。因此,在那之后,情况keysPressed['d']总是true会导致您当前的问题。


您应该在回调函数结束时将其更新为 false。


keysPressed[event.key] = true;

// ....

keysPressed[event.key] = false;


查看完整回答
反对 回复 2022-10-08
  • 2 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号