Я использую объект для записи того, какие клавиши со стрелками нажаты на экземпляр. Удерживая нажатой кнопку left
, если я затем также задержу right
, то остановитесь, удерживая left
, моя функция keydown по-прежнему работает, но если я сделаю ту же настройку, но остановись, удерживая right
, функция прекратится.Keydown stopping
Вот функции:
var keys = {};
$(document).keydown(function(e){
keys[e.which] = true;
console.log('h');
moveBall();
});
$(document).keyup(function(e){
console.log(e.which);
delete keys[e.which];
});
function moveBall(){
var vals = [];
var ball = $("#ball1");
var up = false;
var down = false;
var left = false;
var right = false;
for(var key in keys) {
if (keys.hasOwnProperty(key)) {
vals.push(key);
}
}
if ($.inArray("39", vals)> -1) right = true; // Right
if ($.inArray("37", vals)> -1) left = true;
if ($.inArray("38", vals)> -1) up = true;
if ($.inArray("40", vals)> -1) down = true;
}
Может кто-то пожалуйста, объясните, почему упорядоченность, когда я перестану нажатием клавиши изменения ли еще работает функция keydown
?
Мне непонятно, что вы пытаетесь сделать. Событие keydown останавливается после того, как «h» записывается в консоль независимо от того, какая клавиша нажата. Это потому, что это просто конец функции. – Roboroads
Я пытаюсь сделать так, чтобы функция выполнялась, если нажата хотя бы 1 клавиша – MarksCode
Какая функция? Пожалуйста, напишите более полный код :) – Roboroads