Phaser предоставляет мощный механизм для обработки событий
клавиатуры, который позволяет отслеживать нажатия, отпускания клавиш и
сочетания клавиш. В основе работы лежит объект
this.input.keyboard, через который создаются и управляются
события.
Для начала работы с клавиатурой создаётся объект
Keyboard с помощью встроенного менеджера ввода:
this.input.keyboard.on('keydown', function (event) {
console.log('Нажата клавиша:', event.key);
});
События делятся на ключевые типы:
keydown-SPACE;Объект события содержит свойства:
key — строковое значение клавиши;code — физический код клавиши (например,
KeyA, ArrowUp);altKey, ctrlKey, shiftKey,
metaKey — состояния модификаторов.Phaser позволяет создавать объекты Key, которые
позволяют отслеживать состояние клавиши между кадрами:
this.cursors = this.input.keyboard.createCursorKeys();
this.spaceBar = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.SPACE);
Объекты Key имеют свойства:
isDown — клавиша нажата;isUp — клавиша отпущена;timeDown — время последнего нажатия;duration — сколько времени клавиша была удержана.Использование объектов Key удобно в методе
update() игры для постоянного отслеживания состояния
клавиш:
if (this.cursors.left.isDown) {
player.setVelocityX(-160);
} else if (this.cursors.right.isDown) {
player.setVelocityX(160);
} else {
player.setVelocityX(0);
}
if (Phaser.Input.Keyboard.JustDown(this.spaceBar)) {
player.jump();
}
Phaser поддерживает проверку сочетаний клавиш, что важно для реализации сложных команд:
this.shiftA = this.input.keyboard.addKeyCombo([Phaser.Input.Keyboard.KeyCodes.SHIFT, Phaser.Input.Keyboard.KeyCodes.A], {
resetOnWrongKey: true
});
Свойства и методы сочетаний клавиш:
progress — сколько клавиш последовательности было
нажато;justDown — возвращает true, если
последовательность только что выполнена;reset() — сбросить состояние комбинации.Сочетания клавиш особенно полезны для реализации «секретных» комбинаций или специальных игровых механик.
Phaser позволяет отслеживать клавиши с модификаторами:
this.input.keyboard.on('keydown', function (event) {
if (event.ctrlKey && event.key === 'S') {
console.log('Сочетание Ctrl+S нажато');
}
});
Можно проверять любые сочетания модификаторов с основными клавишами
(Shift, Alt, Ctrl,
Meta) для управления игрой или пользовательским
интерфейсом.
По умолчанию нажатие клавиши вызывает одно событие
keydown. Для обработки повторов при удержании клавиши можно
использовать свойство repeat объекта события:
this.input.keyboard.on('keydown', function (event) {
if (event.repeat) {
console.log('Клавиша удерживается:', event.key);
}
});
Также можно управлять частотой повторений с помощью встроенного
таймера и проверки состояния объекта Key.
Phaser предоставляет удобный способ проверки состояния всех клавиш с
помощью this.input.keyboard.keys или
this.input.keyboard.addKeys():
this.keys = this.input.keyboard.addKeys('W,S,A,D');
if (this.keys.W.isDown) {
player.moveUp();
}
if (this.keys.S.isDown) {
player.moveDown();
}
Это упрощает обработку нескольких направлений движения и позволяет легко масштабировать управление для сложных схем.
keydown / keyup —
глобальные события клавиатуры.keydown-KEY / keyup-KEY —
события для конкретных клавиш.Ctrl, Shift,
Alt).JustDown и repeat
помогают контролировать однократные действия и удержания клавиш.Эти инструменты создают гибкую и мощную систему ввода, пригодную как для простых аркад, так и для сложных проектов с множеством сочетаний клавиш и интерактивных механик.