В Paper.js объект View представляет собой область, в
которой происходит визуализация всех элементов проекта. Он управляет
канвой, размером окна, координатами и масштабом, а
также взаимодействием с пользователем через события. Каждый проект
автоматически создаёт объект view, который предоставляет
доступ к его свойствам и методам.
Основные свойства объекта view:
view.size — возвращает объект типа
Size с шириной и высотой канвы в пикселях.view.bounds — возвращает прямоугольник
(Rectangle), описывающий границы видимой области.view.center — возвращает точку
(Point), соответствующую центру канвы.view.bounds.center — синоним
view.center, используется для вычислений относительно
границ.Пример использования:
console.log(view.size); // { width: 800, height: 600 }
console.log(view.center); // Point { x: 400, y: 300 }
View управляет локальной координатной системой канвы. Координаты
элементов определяются относительно верхнего левого угла
view.bounds. Для работы с масштабом и смещением
используются:
view.zoom — коэффициент
масштабирования. Значение по умолчанию равно 1.view.center — центрирование области
просмотра.view.matrix — матрица преобразований
канвы, используемая для трансформаций координат.Пример изменения масштаба и центра:
view.zoom = 2; // Увеличение области просмотра в 2 раза
view.center = new Point(200, 150); // Смещение центра канвы
Для динамического перемещения по сцене можно использовать свойства и методы View:
view.scrollBy(point) — сдвигает вид на
указанный вектор (Point).view.scrollTo(point) — перемещает
центр просмотра в указанную точку.view.scrollBy(new Point(50, 0)); // Сдвиг влево на 50 пикселей
view.scrollTo(new Point(400, 300)); // Перемещение центра в точку (400, 300)
Объект view поддерживает события, которые позволяют
реагировать на изменения канвы:
onFrame(event) — вызывается на каждом
кадре анимации. Свойство event.delta указывает время между
кадрами.onResize(event) — срабатывает при
изменении размера канвы. event.size содержит новый
размер.Пример анимации:
var circle = new Path.Circle(view.center, 50);
circle.fillColor = 'red';
view.onFr ame = function(event) {
circle.position.x += 2; // Движение вправо
if (circle.position.x > view.size.width) {
circle.position.x = 0; // Зацикливание движения
}
};
Пример обработки изменения размера:
view.onRes ize = function(event) {
console.log('Новый размер канвы: ' + event.size);
};
Для взаимодействия с мышью или других событий часто требуется преобразование координат между клиентской областью браузера и координатами Paper.js:
view.projectToView(point) —
преобразует координату Paper.js в координату DOM.view.viewToProject(point) —
преобразует координату DOM в координату Paper.js.var mousePoint = view.viewToProject(new Point(event.clientX, event.clientY));
Хотя View управляет областью отображения, отдельные элементы сцены
могут быть скрыты через свойства visible и
opacity:
var rectangle = new Path.Rectangle([50, 50], [100, 100]);
rectangle.fillColor = 'blue';
rectangle.visible = false; // Скрыть элемент
Paper.js автоматически перерисовывает канву при изменении объектов, но можно управлять обновлением вручную:
view.update() — принудительно
обновляет канву.view.pause() /
view.resume() — временно приостанавливает или
возобновляет обновления, что полезно при пакетных изменениях.view.pause();
for (var i = 0; i < 100; i++) {
new Path.Circle(new Point(i * 10, i * 10), 5).fillColor = 'green';
}
view.resume();
view.update();
Для корректного масштабирования при изменении размера окна используют
метод view.fitBounds(rectangle, fill):
var rect = new Rectangle(new Point(0,0), new Size(200,100));
view.fitBounds(rect, true); // Масштабирование с сохранением пропорций
Объект view идеально подходит для управления
интерактивной сценой: можно динамически изменять центр, масштаб и
реагировать на события, обеспечивая плавную анимацию и удобное
взаимодействие с пользователем. Правильное использование
view позволяет создавать интерактивные игры,
визуализации данных и анимационные эффекты без необходимости
вручную управлять каждой деталью рендеринга.