MrC*_*lly 4 keyboard jquery event-handling
我想为游戏创建一个简单的事件处理程序,这是我的代码
$(document).keydown(function(e){
switch(e.keyCode){
case 65: //left (a)
console.log('left');
break;
case 68: //right (d)
console.log('right');
break;
}
});
Run Code Online (Sandbox Code Playgroud)
问题是如果我按住一个键,稍微触发多次.我该如何防止这种行为?我在谷歌浏览器上运行我的代码
这是关键的重复.如果您愿意,可以通过记住您已经知道密钥已关闭来打败它:
// A map to remember in
var keysdown = {};
// keydown handler
$(document).keydown(function(e){
// Do we already know it's down?
if (keysdown[e.keyCode]) {
// Ignore it
return;
}
// Remember it's down
keysdown[e.keyCode] = true;
// Do our thing
switch(e.keyCode){
case 65: //left (a)
console.log('left');
break;
case 68: //right (d)
console.log('right');
break;
}
});
// keyup handler
$(document).keyup(function(e){
// Remove this key from the map
delete keysdown[e.keyCode];
});
Run Code Online (Sandbox Code Playgroud)
旁注:我认为当你使用jQuery时,e.which它是更可靠的属性,因为它是由jQuery为你规范化的.
| 归档时间: |
|
| 查看次数: |
8243 次 |
| 最近记录: |