Событие onMouseMove в Paper.js
предназначено для отслеживания перемещения курсора мыши над
canvas. Оно вызывается каждый раз, когда мышь
перемещается, независимо от того, нажата ли кнопка. Это ключевой
инструмент для создания интерактивных интерфейсов, динамической графики
и анимации, реагирующих на движения мыши.
function onMouseMove(event) {
console.log(event.point);
}
event — объект события,
предоставляющий информацию о движении мыши.event.point — объект
Point, представляющий текущую позицию мыши на canvas.event.delta — объект
Point, показывающий смещение мыши с предыдущего
события.event.count — количество
последовательных событий движения мыши.var circle = new Path.Circle({
center: [50, 50],
radius: 20,
fillColor: 'red'
});
function onMouseMove(event) {
circle.position = event.point;
}
В этом примере круг следует за курсором. Ключевой момент:
event.point автоматически учитывает координаты относительно
canvas, поэтому не требуется дополнительная
конвертация.
event.delta для динамикиevent.delta позволяет получать вектор движения мыши
между событиями. Это особенно полезно для анимаций, имитирующих физику
или плавные смещения объектов.
var path = new Path();
path.strokeColor = 'blue';
path.strokeWidth = 2;
function onMouseMove(event) {
path.add(event.point);
if (path.segments.length > 50) {
path.removeSegment(0);
}
}
Здесь создается след мыши, который постепенно
«стирается», обеспечивая эффект движения. event.delta можно
использовать для управления скоростью изменения цвета, размера или
направления объектов в зависимости от скорости движения курсора.
Иногда требуется реагировать только на движения мыши в определенной области. Для этого проверяют координаты события:
function onMouseMove(event) {
if (event.point.x > 100 && event.point.x < 400 &&
event.point.y > 50 && event.point.y < 300) {
console.log('Мышь внутри зоны');
}
}
Это позволяет создавать интерактивные зоны, чувствительные к движению мыши, без обработки всего canvas.
onMouseMove часто используется вместе с:
onMouseDown — для начала действия при
нажатии мыши.onMouseDrag — для перемещения объектов
по траектории мыши с зажатой кнопкой.onMouseUp — для завершения
действия.Пример комбинированного использования:
var path;
function onMouseDown(event) {
path = new Path();
path.strokeColor = 'green';
}
function onMouseMove(event) {
if (path) {
path.add(event.point);
}
}
function onMouseUp(event) {
path.simplify();
}
Здесь создается линия, которая рисуется при движении мыши после нажатия кнопки. При отпускании кнопки линия упрощается.
onMouseMove критично при работе с большим количеством
объектов.requestAnimationFrame
для обновления визуальных изменений вместо прямого изменения объектов в
каждом событии позволяет снизить нагрузку..simplify() или
.smooth() уменьшает количество сегментов кривых и
оптимизирует рендеринг.onMouseMove в интерактивной графикеonMouseMoveonMouseMove — это событие, позволяющее создавать
реактивные и динамичные интерфейсы. Основные аспекты
работы с ним:
event.point.event.delta для определения направления и
скорости движения.Правильное использование onMouseMove делает
интерактивную графику плавной, отзывчивой и эффективной.