Для начала работы с Paper.js необходимо подключить библиотеку в HTML-документе. Существует два основных способа: через CDN или локальный файл. Пример подключения через CDN:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.15/paper-full.min.js"></script>
<canvas id="myCanvas" resize></canvas>
<script type="text/paperscript" canvas="myCanvas">
// код Paper.js будет здесь
</script>
Ключевые моменты:
type="text/paperscript" позволяет писать
скрипты на Paper.js напрямую.canvas связывает скрипт с конкретным
<canvas> элементом.resize на <canvas> автоматически
подстраивает размеры под контейнер.Альтернативный способ — использование чистого JavaScript с объектом
paper.setup(canvas):
const canvas = document.getElementById('myCanvas');
paper.setup(canvas);
В этом случае весь код пишется в обычном JS, и необходимо явно
вызывать paper.view.draw() для обновления сцены, если
изменения производятся вне событий.
Paper.js строится на концепции слоёв (Layer), объектов (Item) и геометрических форм.
Item — базовый объект, от которого наследуются все фигуры, группы и текстовые объекты. Имеет свойства:
position — позиция центра объекта (Point),
например circle.position = new Point(100, 100).fillColor — заливка объекта (Color).strokeColor и strokeWidth — цвет и ширина
контура.rotate(angle) — поворот на угол в градусах.Простейший пример создания круга:
let circle = new Path.Circle({
center: [150, 150],
radius: 50,
fillColor: 'red',
strokeColor: 'black',
strokeWidth: 2
});
Point — объект, описывающий координаты и векторы, используется для задания позиции, размеров и движения объектов:
let p1 = new Point(50, 50);
let p2 = new Point(200, 100);
let distance = p1.getDistance(p2);
Path — последовательность точек, образующая линию или фигуру. Можно создавать из массива точек или динамически добавлять сегменты:
let path = new Path();
path.strokeColor = 'blue';
path.add(new Point(50, 50));
path.add(new Point(150, 50));
path.add(new Point(100, 100));
Слой (Layer) — контейнер для объектов, влияющий на
порядок отрисовки. По умолчанию все объекты добавляются в активный слой.
Для создания собственного слоя:
let layer = new Layer();
let rect = new Path.Rectangle([10, 10], [100, 50]);
rect.fillColor = 'green';
layer.addChild(rect);
Группа (Group) объединяет объекты,
позволяя управлять ими как единым целым:
let group = new Group([circle, path]);
group.position = new Point(200, 200);
group.rotate(45);
Paper.js использует объект Color для заливки и контура.
Цвет можно задавать строкой, RGB, HSB или градиентом.
Примеры:
circle.fillColor = 'orange'; // строкой
circle.strokeColor = new Color(0, 1, 0); // RGB (зелёный)
circle.fillColor = {
gradient: {
stops: ['red', 'yellow'],
radial: true
},
origin: circle.position,
destination: circle.bounds.rightCenter
};
Paper.js поддерживает автоматическую отрисовку через
onFrame, что позволяет создавать анимации:
let movingCircle = new Path.Circle([50, 50], 20);
movingCircle.fillColor = 'purple';
function onFrame(event) {
movingCircle.position.x += 2;
if (movingCircle.position.x > view.size.width) {
movingCircle.position.x = 0;
}
}
onMouseMove, onMouseDown, onMouseDrag — стандартные события для взаимодействия с мышью:
function onMouseMove(event) {
circle.position = event.point;
}
function onMouseDown(event) {
let dot = new Path.Circle(event.point, 5);
dot.fillColor = 'black';
}
Перемещение, вращение, масштабирование применяются ко всем объектам:
circle.translate(new Point(50, 0)); // сдвиг на 50px по X
circle.rotate(30); // поворот на 30°
circle.scale(1.5); // увеличение в 1.5 раза
Матрицы трансформации (Matrix)
позволяют комбинировать несколько действий и применять их к объектам
программно:
let matrix = new Matrix();
matrix.translate(100, 50);
matrix.rotate(45);
circle.transform(matrix);
Paper.js поддерживает текстовые объекты (PointText):
let text = new PointText(new Point(100, 200));
text.justification = 'center';
text.fillColor = 'blue';
text.fontSize = 24;
text.content = 'Hello, Paper.js!';
Можно комбинировать с графикой, а также анимировать положение или
цвет текста через onFrame.
Для первого проекта рекомендуется использовать следующий шаблон:
<canvas> и подключением
Paper.js.<script type="text/paperscript"> или через чистый
JS.onFrame, onMouseMove).translate, rotate, scale.Такой подход позволяет создавать интерактивные и анимированные сцены с минимальными усилиями, полностью используя возможности Paper.js для векторной графики в браузере.