Объект paper и глобальная область видимости

Библиотека Paper.js предоставляет мощный инструмент для работы с векторной графикой на HTML5 Canvas. Центральным элементом является объект paper, который инкапсулирует все возможности библиотеки и управляет глобальной областью видимости.


Объект paper

Объект paper представляет собой пространство имен, через которое осуществляется доступ ко всем классам, методам и константам библиотеки. Он содержит такие ключевые свойства и методы:

  • project – текущий проект Paper.js, который управляет всеми элементами на холсте. Проект содержит слои (layers), элементы (items) и параметры рендеринга.
  • projects – массив всех созданных проектов. Позволяет работать с несколькими холстами одновременно.
  • view – объект, представляющий текущее представление холста. Через него управляются размеры, масштаб, и события обновления.
  • Path, Point, Layer, Group, Tool – классы для создания объектов, геометрических точек, слоев, групп и инструментов взаимодействия.

Прямой доступ к этим классам через paper выглядит так:

let circle = new paper.Path.Circle({
    center: [100, 100],
    radius: 50,
    strokeColor: 'black',
    fillColor: 'red'
});

Здесь создаётся круг с помощью конструктора paper.Path.Circle.


Глобальная область видимости

Paper.js может работать в двух режимах: с использованием глобального объекта paper и с активацией глобальной области видимости (paper.setup(canvas) с последующим paper.install(window)).

Глобальный режим позволяет обращаться к классам и методам Paper.js без префикса paper.. Это достигается вызовом:

paper.install(window);
paper.setup(document.getElementById('myCanvas'));

После установки глобальной области видимости доступно следующее:

let circle = new Path.Circle({
    center: [150, 150],
    radius: 75,
    strokeColor: 'blue',
    fillColor: 'green'
});

В этом случае Path, Point, Tool и другие классы становятся доступными как глобальные переменные. Такой режим удобен для небольших проектов, однако в больших приложениях предпочтительно использовать объект paper напрямую, чтобы избежать конфликтов имен.


Работа с project и view

project управляет структурой элементов на холсте:

  • project.activeLayer – текущий активный слой, на который добавляются новые объекты.
  • project.layers – массив слоев проекта. Позволяет переключать видимость, порядок и свойства слоев.
  • project.selectedItems – массив выделенных элементов на холсте.

Пример добавления объекта в активный слой:

let rectangle = new paper.Path.Rectangle({
    point: [50, 50],
    size: [100, 80],
    strokeColor: 'black'
});
project.activeLayer.addChild(rectangle);

view управляет визуализацией и взаимодействием с Canvas:

  • view.size – размеры холста.
  • view.center – центр текущего вида.
  • view.zoom – масштаб отображения.
  • view.onFrame – обработчик анимации, вызывается при каждом обновлении кадра.

Пример анимации с использованием view.onFrame:

circle.onFr ame = function(event) {
    this.rotate(1); // Вращение объекта на 1 градус каждый кадр
};

Контроль глобальной области

Использование глобальной области требует аккуратного управления:

  • Необходимо следить за именами переменных, чтобы избежать коллизий с другими библиотеками.
  • В больших проектах рекомендуется использовать только объект paper и обращаться к нему явно (paper.Path, paper.Point), что обеспечивает модульность и изоляцию кода.

Сводка по ключевым моментам

  • paper – основной объект библиотеки, инкапсулирующий все функции.
  • Глобальная область видимости делает классы Paper.js доступными без префикса, но может вызывать конфликты имен.
  • project управляет слоями и элементами на холсте.
  • view отвечает за отображение, размеры, масштаб и события кадра.
  • Использование объекта paper напрямую повышает модульность и удобство работы в сложных проектах.

Функции объекта paper и правильное понимание глобальной области видимости являются фундаментом эффективного использования Paper.js, обеспечивая контроль над проектами, слоями и объектами в приложении.