В Paper.js событие KeyEvent представляет взаимодействие
пользователя с клавиатурой. Оно используется для отслеживания нажатий
клавиш и управления поведением объектов на холсте в зависимости от
ввода. События клавиатуры разделяются на keyDown и
keyUp, которые вызываются при нажатии и отпускании
клавиши соответственно.
function onKeyDown(event) {
console.log(event.key); // Выводит символ или имя клавиши
}
События клавиатуры подключаются глобально, и обработчики обычно
задаются через функции с именем onKeyDown или
onKeyUp. Paper.js автоматически передает объект
KeyEvent в эти функции.
KeyEvent содержит набор свойств, которые позволяют точно определить характер нажатия клавиши:
event.key – строка, указывающая символ клавиши
или её имя ('a', 'enter',
'space', 'shift' и др.).
event.character – символ, соответствующий
нажатой клавише с учётом модификаторов (shift,
capslock). Отличается от event.key, так как
показывает именно отображаемый символ.
event.modifiers – объект с булевыми значениями, отражающий состояние клавиш-модификаторов:
{
shift: true/false,
control: true/false,
alt: true/false,
meta: true/false
}event.event – исходное DOM-событие
KeyboardEvent, которое позволяет использовать свойства и
методы нативного события.
event.type – тип события ('keydown'
или 'keyup').
function onKeyDown(event) {
if (event.key === 'space') {
console.log('Пробел был нажат');
}
if (event.modifiers.shift) {
console.log('Shift был зажат при нажатии клавиши', event.key);
}
console.log('Символ:', event.character);
}
В этом примере различаются имя клавиши
(key) и отображаемый символ
(character), что важно для обработки текстового ввода и
управления действиями на холсте.
KeyEvent не имеет собственных методов изменения
состояния клавиш, но через event.event можно использовать
все стандартные методы DOM KeyboardEvent, например:
preventDefault() – предотвращает стандартное поведение
браузера при нажатии клавиши.stopPropagation() – останавливает дальнейшее
распространение события в DOM.function onKeyDown(event) {
if (event.key === 'tab') {
event.event.preventDefault(); // предотвращаем переход между элементами формы
}
}
Модификаторы позволяют обрабатывать сочетания клавиш, что полезно для игровых проектов или интерактивных приложений:
function onKeyDown(event) {
if (event.key === 'z' && event.modifiers.control) {
console.log('Ctrl+Z — отмена действия');
}
if (event.key === 's' && event.modifiers.meta) {
console.log('Cmd+S — сохранение проекта');
}
}
Ключевым моментом является правильная проверка
event.modifiers, так как разные платформы могут
интерпретировать клавиши control и meta
по-разному.
Свойство event.character удобно использовать для
обработки текстового ввода:
let inputText = '';
function onKeyDown(event) {
if (event.character && event.key.length === 1) {
inputText += event.character;
}
if (event.key === 'backspace') {
inputText = inputText.slice(0, -1);
}
console.log(inputText);
}
В этом примере обеспечивается корректная обработка ввода символов и
удаление с помощью backspace, что невозможно реализовать
только через event.key.
event.key и проверка модификаторов.event.character.preventDefault() для клавиш,
которые могут запускать стандартные действия браузера (например,
space, tab, стрелки).onKeyDown и onKeyUp должны
быть короткими и быстрыми, чтобы не блокировать основной рендеринг
Paper.js.Эти свойства и методы позволяют создавать сложные интерактивные приложения на Paper.js с поддержкой клавиатурного ввода и гибким управлением действиями на холсте.