Событие onKeyDown в Paper.js позволяет отслеживать
нажатия клавиш на клавиатуре и реагировать на них в режиме реального
времени. Оно является частью системы событий Paper.js и тесно связано с
объектом Tool, который управляет пользовательским
взаимодействием с холстом.
Для начала необходимо создать объект Tool, к которому
будет привязано событие:
var tool = new Tool();
События клавиатуры в Paper.js привязываются к инструменту, а не к самому проекту или слою. Это позволяет иметь несколько инструментов с разными обработчиками, которые активируются в зависимости от текущего активного инструмента.
onKeyDowntool.onKeyD own = function(event) {
// Обработка нажатия клавиши
};
event.key – строка, содержащая символ нажатой клавиши
(например, 'a', 'Enter',
'ArrowUp').event.character – символ, который генерируется при
обычных текстовых клавишах, учитывая раскладку и регистр.event.modifiers – объект с логическими свойствами
shift, control, alt,
meta, указывающими, какие модификаторы были зажаты при
нажатии клавиши.onKeyDownvar tool = new Tool();
tool.onKeyD own = function(event) {
if (event.key === 'a') {
console.log('Нажата клавиша "a"');
} else if (event.key === 'space') {
console.log('Нажата пробел');
} else if (event.key === 'up') {
console.log('Стрелка вверх');
}
if (event.modifiers.shift) {
console.log('Shift зажат');
}
};
В этом примере обработчик различает конкретные клавиши и учитывает наличие модификаторов.
key и
characterevent.key – всегда возвращает символ
клавиши в стандартизированном виде ('a',
'enter', 'left', 'space'),
независим от регистра.event.character – возвращает именно
символ, который был введён, с учётом раскладки и Shift ('A'
для заглавной буквы).tool.onKeyD own = function(event) {
console.log('Key:', event.key);
console.log('Character:', event.character);
};
Это различие важно при разработке текстовых инструментов или игровых механик.
onKeyDown для управления объектамиСобытие onKeyDown часто применяется для перемещения
объектов, изменения их свойств или управления анимацией:
var circle = new Path.Circle(new Point(100, 100), 50);
circle.fillColor = 'blue';
var tool = new Tool();
tool.onKeyD own = function(event) {
switch(event.key) {
case 'up':
circle.position.y -= 10;
break;
case 'down':
circle.position.y += 10;
break;
case 'left':
circle.position.x -= 10;
break;
case 'right':
circle.position.x += 10;
break;
}
};
В этом коде стрелки клавиатуры перемещают круг по холсту, создавая базовую интерактивность.
С помощью event.modifiers можно создавать комбинации
клавиш:
tool.onKeyD own = function(event) {
if (event.key === 'z' && event.modifiers.control) {
console.log('Ctrl + Z: Отмена действия');
}
if (event.key === 's' && event.modifiers.control) {
console.log('Ctrl + S: Сохранение проекта');
}
};
Это позволяет реализовать привычные комбинации из приложений напрямую в Paper.js.
onKeyDown работает только при активном
инструменте. Если инструмент не активен, нажатия не будут
регистрироваться.keydown в сочетании с Paper.js, но для
интеграции с Paper.js удобнее именно Tool.onKeyDown.switch или if для ключей
позволяет легко расширять обработку на дополнительные клавиши.onKeyUpДля полноценного управления клавиатурой рекомендуется использовать
событие onKeyUp:
tool.onKe yUp = function(event) {
console.log('Отпущена клавиша:', event.key);
};
Это особенно полезно при анимации объектов, чтобы остановить движение после отпускания клавиши.
onKeyDownTool, что обеспечивает
контекстное управление.onKeyDown — основной механизм Paper.js для интеграции
клавиатурного ввода с визуальными объектами на холсте, обеспечивающий
высокую гибкость и точный контроль над пользовательским
взаимодействием.