HitResult — это объект, который возвращается методами,
связанными с обнаружением пересечений и попаданий по объектам в
Paper.js. Основное предназначение HitResult — предоставить
детальную информацию о том, где и как произошло взаимодействие между
курсором, точкой или другим объектом и графическим элементом сцены.
HitResulttypeСвойство type определяет тип попадания. Оно может
принимать следующие значения:
type позволяет точно определить, какой элемент объекта
был выбран при взаимодействии, что особенно важно для сложных Path и
CompoundPath.
itemСвойство item хранит ссылку на объект Paper.js
(Path, Shape, Raster,
TextItem и другие), с которым произошло попадание. Через
это свойство можно получить полный доступ к объекту и его методам для
дальнейшей обработки.
Пример использования:
var hit = project.activeLayer.hitTest(point);
if (hit) {
console.log(hit.item.fillColor); // получение цвета объекта, на который произошло попадание
}
pointСвойство point содержит объект типа Point,
который обозначает точное место попадания на объект. Это координаты в
локальной системе координат Paper.js, что позволяет использовать их для
построения новых элементов или анимации.
segmentЕсли type равен 'segment', свойство
segment возвращает объект типа Segment, на
который произошло попадание. Через него можно получить доступ к
координатам сегмента, его управляющим точкам (handleIn,
handleOut) и изменять кривую напрямую.
if (hit && hit.type === 'segment') {
hit.segment.point.x += 10; // сдвиг сегмента по оси X
}
curveСвойство curve используется при попадании на кривую
между сегментами. Оно возвращает объект типа Curve,
позволяющий анализировать форму кривой, её длину, направление и
параметры кривизны.
locationСвойство location — объект типа
CurveLocation, который предоставляет более детальную
информацию о положении попадания на кривой. С помощью
location можно узнать:
curve — кривую, на которой произошло попадание.parameter — нормализованное положение попадания на
кривой (от 0 до 1).point — координаты попадания.segment — ближайший сегмент кривой.location особенно полезно для анимации вдоль кривой или
вычисления промежуточных точек.
distanceСвойство distance показывает расстояние от указанной
точки теста до фактического попадания на объект. Это число удобно для
сортировки попаданий или выбора ближайшего объекта.
name и
toleranceХотя HitResult напрямую не содержит свойства
name, некоторые методы Paper.js используют дополнительные
параметры tolerance для настройки точности попаданий.
tolerance определяет максимальное расстояние, на котором
точка считается “попавшей” в объект. Это критично для тонких линий и
сложных кривых.
var hit = path.hitTest(point, { tolerance: 5 });
HitResult с методами hitTestМетоды hitTest и hitTestAll возвращают
объект HitResult или массив объектов HitResult
соответственно. Они поддерживают гибкую настройку через опции:
fill — учитывать попадания в
заливку.stroke — учитывать попадания по
обводке.segments — учитывать попадания на
сегменты.tolerance — точность попадания.Пример:
var hit = path.hitTest(event.point, {
fill: true,
stroke: true,
segments: true,
tolerance: 2
});
if (hit) {
console.log('Попадание на:', hit.type, 'в точке', hit.point);
}
HitResult обеспечивает единый интерфейс для всех видов
попаданий, включая сегменты, кривые, заливки, обводки и текст.location и segment позволяет
управлять объектами на низком уровне, что делает Paper.js мощным
инструментом для интерактивной графики.hitTestAll и сортировать результаты по
distance, чтобы определить ближайший объект.HitResult является фундаментальным элементом
интерактивного взаимодействия в Paper.js, обеспечивая полный контроль
над точками попадания и их обработкой в сложных графических сценах.