Событие onMouseDown является ключевым элементом
взаимодействия с пользователем в Paper.js. Оно срабатывает в момент
нажатия кнопки мыши на холсте и позволяет реагировать на действия
пользователя мгновенно. Это основной инструмент для создания
интерактивных графических приложений, включая рисование, выбор объектов,
запуск анимаций и управление объектами.
Для использования события onMouseDown необходимо
определить его в контексте объекта Paper.js:
tool.onMouseD own = function(event) {
// действия при нажатии кнопки мыши
};
Пояснения:
tool – объект класса Tool, отвечающий за
обработку событий.event – объект события, предоставляющий информацию о
координатах нажатия, кнопке мыши и модификаторах клавиш.Создание нового инструмента:
var tool = new Tool();
Каждое событие мыши в Paper.js передаёт объект
MouseEvent, содержащий следующие свойства:
event.point – координаты точки на холсте, где произошло
нажатие, представленная объектом Point.event.count – количество последовательных кликов
(например, двойной клик будет 2).event.event – нативный объект события DOM,
предоставляющий доступ к дополнительным свойствам, таким как
button или ctrlKey.Простейший пример — создание круга в месте нажатия:
tool.onMouseD own = function(event) {
var circle = new Path.Circle({
center: event.point,
radius: 20,
fillColor: 'red'
});
};
В этом примере каждый клик мыши создаёт красный круг радиусом 20
пикселей в точке клика. Это демонстрирует основную работу
onMouseDown с координатами и динамическое создание
объектов.
onMouseDown позволяет учитывать модификаторы клавиш, что
удобно для расширения интерактивности:
tool.onMouseD own = function(event) {
if (event.event.shiftKey) {
var rect = new Path.Rectangle({
point: [event.point.x - 15, event.point.y - 15],
size: [30, 30],
fillColor: 'blue'
});
} else {
var circle = new Path.Circle({
center: event.point,
radius: 15,
fillColor: 'green'
});
}
};
Здесь при удержании Shift создаётся квадрат, а при обычном клике — круг. Это позволяет легко реализовать разные режимы взаимодействия на одном инструменте.
Событие onMouseDown часто комбинируется с
onMouseDrag и onMouseUp для реализации
интерактивного перемещения объектов:
var selectedItem;
tool.onMouseD own = function(event) {
selectedItem = project.hitTest(event.point);
};
tool.onMouseD rag = function(event) {
if (selectedItem) {
selectedItem.position += event.delta;
}
};
tool.onMous eUp = function(event) {
selectedItem = null;
};
В этом примере:
project.hitTest(point) проверяет, есть ли объект под
курсором.onMouseDrag) объект
перемещается на величину event.delta.onMouseUp) переменная
selectedItem сбрасывается.MouseEvent содержит свойство event.button
для определения, какая кнопка мыши была нажата:
0 — левая кнопка1 — средняя кнопка (колёсико)2 — правая кнопкаПример с различной реакцией на кнопки:
tool.onMouseD own = function(event) {
switch(event.event.button) {
case 0:
console.log('Левая кнопка');
break;
case 1:
console.log('Средняя кнопка');
break;
case 2:
console.log('Правая кнопка');
break;
}
};
Событие onMouseDown идеально подходит для генерации
динамических эффектов. Например, создание анимированного взрыва
частиц:
tool.onMouseD own = function(event) {
for (var i = 0; i < 10; i++) {
var particle = new Path.Circle({
center: event.point,
radius: Math.random() * 5 + 2,
fillColor: new Color(Math.random(), Math.random(), Math.random())
});
particle.tween(
{ scaling: 0, opacity: 0 },
500,
'easeOutCubic'
);
}
};
Каждый клик создаёт несколько разноцветных частиц, которые постепенно
исчезают, демонстрируя работу onMouseDown в связке с
анимацией.
Tool на каждый режим взаимодействия, чтобы события не
конфликтовали.hitTest для точного взаимодействия с
объектами.onMouseDown с onMouseDrag и
onMouseUp для реализации полноценной системы
перетаскивания.onMouseDown является фундаментальным инструментом
Paper.js для интерактивного взаимодействия, позволяя создавать
динамические и отзывчивые графические приложения, от простого рисования
до сложных интерфейсных элементов и анимаций.