Книга: Выразительный JavaScript
Отслеживание клавиш
Отслеживание клавиш
Для такой игры нам не нужны клавиши, эффект которых работает однократно после keypress
. Нам нужен эффект, продолжающийся всё время, пока клавиша нажата (движущаяся фигурка)
Нам надо сделать обработчик клавиш, хранящий текущее состояние кнопок влево, вправо вверх и вниз. Также нам надо вызывать для них preventDefault
, чтобы они не прокручивали страницу.
Следующая функция, когда ей дают объект с кодами клавиш в виде имён свойств и названиями клавиш в виде значений, возвращает другой объект, который отслеживает текущее состояние кнопок. Он регистрирует обработчики событий для событий "keydown"
и "keyup"
, и когда код клавиши события совпадает с отслеживаемым кодом, обновляет объект.
var arrowCodes = {37: "left", 38: "up", 39: "right"};
function trackKeys(codes) {
var pressed = Object.create(null);
function handler(event) {
if (codes.hasOwnProperty(event.keyCode)) {
var down = event.type == "keydown";
pressed[codes[event.keyCode]] = down;
event.preventDefault();
}
}
addEventListener("keydown", handler);
addEventListener("keyup", handler);
return pressed;
}
Обратите внимание, как одна функция обработчика используется для событий обоих типов. Она проверяет свойство type
объекта события, определяя, надо ли обновлять состояние кнопки на true("keydown"
) или false("keyup"
).
- 16.2. Комбинации клавиш
- Где находится клавиша Windows?
- Нужно набрать специальные символы, а на клавиатуре нет таких клавиш
- Как избежать случайного нажатия клавиши Caps Lock?
- Горячие клавиши Windows
- 12.7.4. Переназначение клавиш на клавиатуре
- 8.3. Отслеживание хода проекта и контроль над ним
- Можно ли при помощи горячих клавиш переводить компьютер в спящий режим?
- Можно ли заблокировать клавиши для выключения компьютера?
- Как выключить монитор с помощью горячих клавиш?
- Горячие клавиши
- Распознавание нажатий клавиш