При удерживании одной клавиши со стрелкой функция работает правильно.
Однако проблема возникает, когда я удерживаю вторую клавишу со стрелкой и отпускаю вторую клавишу, когда первая удерживаемая клавиша больше не обнаруживается.
Упрощенная версия моих функций выглядит следующим образом:
document.body.onkeyup = function(e){
if ([37,38,39,40].indexOf(e.keyCode) > -1){
var key_pressed = e.keyCode || e.which;
console.log(key_pressed + " is UP")
}
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
};
document.body.onkeydown = function(e){
if ([37,38,39,40].indexOf(e.keyCode) > -1){
var key_pressed = e.keyCode || e.which;
console.log(key_pressed + " is DOWN")
}
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
};
Так что, если я удерживаю клавишу со стрелкой ВВЕРХ, он постоянно повторяет 38 is DOWN
, пока я держу клавишу.
Затем, если я нажимаю ПРАВУЮ кнопку со стрелкой, она повторяет 39 is DOWN
, пока я держу обе клавиши.
Затем, если я отпускаю ПРАВУЮ клавишу со стрелкой, она говорит: 39 is UP
.
Мойожидалось, что он продолжит повторять «1016» снова, так как я все еще держу стрелку ВВЕРХ.Однако этого не происходит.
Почему это происходит?Что я должен сделать, чтобы исправить это, чтобы моя клавиша со стрелкой все еще определялась как удерживаемая?