Keyboard 如何防止keyup事件中断jQuery中的keydown事件?
可能重复:Keyboard 如何防止keyup事件中断jQuery中的keydown事件?,keyboard,jquery-animate,jquery,keyboard-events,Keyboard,Jquery Animate,Jquery,Keyboard Events,可能重复: 我试图用JavaScript/CSS/HTML创建一个简单的游戏,我使用jQuery(和一点下划线)来处理按键。玩家使用箭头键控制一个方块。我遇到了同时处理多个按键的问题。我有一个系统,在这个系统中,一个闭包跟踪所有被按下的箭头键。如果玩家按以下顺序按键,则效果良好: 玩家按下(方块向下移动) 玩家按下左键(方块向左斜向下移动) 玩家向下释放(方块向左移动) 球员向左释放(拦网) 但是,如果第3步和第4步相反,则块停止。在这种情况下,实际情况如下: 玩家按下(方块向下移动) 玩家按
我试图用JavaScript/CSS/HTML创建一个简单的游戏,我使用jQuery(和一点下划线)来处理按键。玩家使用箭头键控制一个方块。我遇到了同时处理多个按键的问题。我有一个系统,在这个系统中,一个闭包跟踪所有被按下的箭头键。如果玩家按以下顺序按键,则效果良好:
//为特定元素创建动画处理程序。
//动画在提交任何更改时对其作出反应
var getMovementAnimator=函数(元素){
var params={},
$element=$(element);
返回函数(更改){
_.每个(更改、功能(val、键){
//从动画参数中删除空关键点或零关键点
if((val==0 | | |!val)&&&&.has(参数,键)){
删除参数[key];
}否则{
参数[键]='+='+val+'px';
}
});
$element.animate(参数,{duration:0,queue:false});
控制台日志(params);
};
};
//确定图元的移动方向和速度
//按键事件之后
var getMovementChange=函数(keyEvent,keydown){
var isMoving=!!按下键,
params={},
dir='',
速度=按键按下?5:0,
箭头={左:37,上:38,右:39,下:40};
开关(keyEvent.which){
大小写箭头。左:
dir='左';
速度=-速度;
打破
大小写箭头。向上:
dir='top';
速度=-速度;
打破
大小写箭头。右:
dir='左';
打破
大小写箭头。向下:
dir='top';
打破
}
//如果按键未按上述任何一项,请不要执行任何操作
如果(!dir){
返回false;
}
如果(!速度){
log('key up:',dir);
}
参数[dir]=速度;
返回参数;
}
//设置密钥处理程序
$(文档).ready(函数(){
var board=$(“#board”),
animatePlayer=getMovementAnimator('.player');
$(文档).keydown(函数(e){
e、 预防默认值();
var changes=getMovementChange(e,true);
动画图层(更改);
}).keyup(功能(e){
e、 预防默认值();
var changes=getMovementChange(e,false);
动画图层(更改);
});
});
对堆栈溢出的进一步搜索(使用正确的关键字)表明,我看到的问题实际上不是代码中的错误
然而,我发现