我正在制作一个简单的 Javascript 游戏,需要能够检查是否正在按下某些键。我已经尝试绑定到该onkeydown
事件,但我遇到的问题是双重的:首先,它不会让我检查是否在任何时候按下了多个键。其次,它在开始向事件发送垃圾邮件之前按住键后暂停。
在我的代码中,我可以有一个事件,也可以有一个函数,它每毫秒检查一次是否正在按下键。既然这是一个游戏,我真的不会有任何问题。
我正在制作一个简单的 Javascript 游戏,需要能够检查是否正在按下某些键。我已经尝试绑定到该onkeydown
事件,但我遇到的问题是双重的:首先,它不会让我检查是否在任何时候按下了多个键。其次,它在开始向事件发送垃圾邮件之前按住键后暂停。
在我的代码中,我可以有一个事件,也可以有一个函数,它每毫秒检查一次是否正在按下键。既然这是一个游戏,我真的不会有任何问题。
您可以一起使用 onkeydown 和 onkeyup :
var pressed={};
element.onkeydown=function(e){
e = e || window.event;
pressed[e.keyCode] = true;
}
element.onkeyup=function(e){
e = e || window.event;
delete pressed[e.keyCode];
}
使用此代码,您将每个按下的键代码存储在pressed
变量中,然后在释放键时将其删除。因此,当您需要知道按下了哪些键时,您可以使用 for(..in..) 循环通过按下的对象。
我刚刚写了一篇关于这个主题的博客文章。
见http://www.nixtu.info/2010/12/less-spartan-approach-to-javascript-key.html