在javascript中,如何检查按下两个键并释放第二个键后是否按下了一个键?

在javascript中,如何检查按下两个键并释放第二个键后是否按下了一个键?,javascript,Javascript,我正在尝试使用javascript构建一个简单的游戏,角色应该通过分别按下向上箭头键和向右箭头键向前移动并向右转向 问题是,当我按下“向上”然后按下“向右”时,角色会向前移动,然后向右旋转并保持对角移动,但当我释放向右箭头键时,它会停止移动,而我希望它继续向前移动,显然,向下键事件无法再识别向上箭头键是否仍被按下。那么我该如何解决它 代码: 按键关闭事件: 关键事件: windows 10下的快速检查显示,它只会自动重复上次按下的键 例如,如果按住左箭头键,它会重复,正如您所预期的那样。如果随后

我正在尝试使用javascript构建一个简单的游戏,角色应该通过分别按下向上箭头键和向右箭头键向前移动并向右转向

问题是,当我按下“向上”然后按下“向右”时,角色会向前移动,然后向右旋转并保持对角移动,但当我释放向右箭头键时,它会停止移动,而我希望它继续向前移动,显然,向下键事件无法再识别向上箭头键是否仍被按下。那么我该如何解决它

代码:

按键关闭事件:

关键事件:


windows 10下的快速检查显示,它只会自动重复上次按下的键

例如,如果按住左箭头键,它会重复,正如您所预期的那样。如果随后按下右箭头,而不松开左箭头,右箭头将重复。如果随后松开右箭头,但仍按住左箭头键,则左箭头不会继续自动重复

因此,如果您希望a键在另一个键被释放后继续重复,则需要设计并引入计时代码,例如,使用setInterval以编程方式重复在接收到另一个键的“向下键”后被按住的键。显然,如果接收到计时器重复的密钥的密钥更新事件,则需要停止使用计时器重复该事件


对于一个键来说,恢复重复的重要性由你来判断——记住,如果你不能修复一个bug,或者修复起来太贵,就把它称为一个特性,并告诉每个人。您不会是第一个:-

您还可以发布您的KeyProcess函数吗?如果KeyProcess仅在keydown/keyup回调中调用,则这可能是问题所在。从一个独立的计时器事件调用该函数,而不是从重复事件为其供电,这将是一个简单的解决方案。
var keys = [];
   document.body.addEventListener("keydown",(event) => {

        keys[event.keyCode] = true;
        keysProcess();  //this function loops through the array and moves the character depending on the keyCode value 
    });
    document.body.addEventListener("keyup",(event) =>{

        keys[event.keyCode] = false ; 
        keysProcess();

    });