我正在尝试编写一个简单的乒乓球程序,该程序使用箭头键来导航玩家的球拍。我需要检查瞬时密钥代码,所以我创建了一个单独的js文件来解析onkeydown和onkeyup事件,作为我需要的密钥代码的布尔值。但是,当我键入左箭头时,它会将键码37和39一起打开。这对于右箭头不起作用,但是在将空格键混淆为箭头键之前我已经使用过它。代码基本上如下所示:
var KeyPressed=
{
Left:false,
Right:false,
...
};
window.onkeydown =function(e) {
e = e || window.event;
var getKey = e.keyCode ? e.keyCode:e.charCode;
switch (getKey) {
case 37: KeyPressed.Left=true;
case 39: KeyPressed.Right=true;
...
}
};
window.onkeyup = function(e){
e = e || window.event;
var getKey = e.keyCode ? e.keyCode:e.charCode;
switch (getKey){
case 37: KeyPressed.Left=false;
case 39: KeyPressed.Right=false;
...
}
};
答案 0 :(得分:1)
看起来你每次按下都没有重置左/右布尔状态。因此,无论如何,您都应该onkeyup
将两者都设置为false。