5

我正在制作一个简单的 Javascript 游戏,需要能够检查是否正在按下某些键。我已经尝试绑定到该onkeydown事件,但我遇到的问题是双重的:首先,它不会让我检查是否在任何时候按下了多个键。其次,它在开始向事件发送垃圾邮件之前按住键后暂停。

在我的代码中,我可以有一个事件,也可以有一个函数,它每毫秒检查一次是否正在按下键。既然这是一个游戏,我真的不会有任何问题。

4

2 回答 2

8

您可以一起使用 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..) 循环通过按下的对象。

于 2010-12-13T08:41:24.600 回答
0

我刚刚写了一篇关于这个主题的博客文章。

http://www.nixtu.info/2010/12/less-spartan-approach-to-javascript-key.html

于 2010-12-13T08:45:48.060 回答