我在keydown事件上从光标键获取输入时遇到问题 . 我正在同时使用空格键和箭头keydown事件的keydown事件(在spaceinvaders游戏中,你应该能够同时移动并通过空格键触发) .
当按下空格键时,船应该能够同时沿x和y轴移动 . 现在的实际问题是:每当按下空格键时,我都可以上下移动,但不能前进和下移 . 我也可以向后和向下移动,但不能倒退 . 当没有按下空格键时,它可以工作,我可以对角移动 . 这同样适用于wasd键 .
if (e.keyCode == 37 || e.keyCode == 38 || e.keyCode == 39 || e.keyCode == 40)
e.preventDefault();
if (e.keyCode == 32){
e.preventDefault();
spaceState = true;
}
if (e.keyCode == 87 || e.keyCode == 38) keyState["UpDown"]="w";//w
if (e.keyCode == 83 || e.keyCode == 40) keyState["UpDown"]="s";//s
if (e.keyCode == 65 || e.keyCode == 37) keyState["RightLeft"]="a";//a
if (e.keyCode == 68 || e.keyCode == 39) keyState["RightLeft"]="d"; //d
组合w和d作品组合和作品
w,a和s,d DONT工作
当没有按空格键时,所有组合仍然有效,即使空格键返回keydown事件,也可以使用组合 . 问题只是为什么?
1 回答
我最近回答了一个very similar question所以我只是从那里复制我的答案 .
赔率与您的代码无关 . 为节省成本,许多键盘不能同时支持3个或更多键的每个组合,并且专门用于支持常用的组合(例如Ctrl Alt Del) . 这种现象被称为“重影” .
有关扩展说明,请参见this page from Microsoft .