У меня проблема с получением ввода от клавиш курсора в событии нажатия клавиши. Я использую событие нажатия клавиши для пробела и событие нажатия клавиши со стрелкой одновременно (в игре 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 работает комбинация s и a работает
w,a и s,d НЕ работают
Тем не менее все комбинации работают, когда пробел не нажат, комбинации wasd работают, даже когда пробел возвращает событие нажатия клавиши. Вопрос просто в том, почему?