Для начала необходимо подключить библиотеку Two.js к проекту. Обычно используется CDN-ссылка:
Создание сцены происходит через инициализацию объекта
Two с указанием параметров размеров и типа рендеринга
(svg или canvas):
const params = { width: 800, height: 600, type: Two.Types.canvas };
const two = new Two(params).appendTo(document.body);
Ключевой момент: appendTo прикрепляет канвас или SVG к
DOM-дереву, после чего можно добавлять объекты.
Two.js предоставляет набор базовых фигур, которые можно создавать и модифицировать:
two.makeLine(x1, y1, x2, y2) и
two.makeCurve(points).two.makeRectangle(x, y, width, height) — центр координат
находится в середине прямоугольника.two.makeCircle(x, y, radius) и
two.makeEllipse(x, y, width, height).two.makePolygon(x, y, radius, sides).Каждый примитив возвращает объект, который имеет свойства
позиции, масштаба, угла
поворота, а также цвета заливки
(fill) и обводки
(stroke).
const circle = two.makeCircle(200, 200, 50);
circle.fill = '#FF8000';
circle.stroke = '#000000';
circle.linewidth = 3;
Two.js позволяет объединять несколько примитивов в группы для совместного управления:
const group = two.makeGroup();
group.add(circle);
group.add(rectangle);
group.translation.set(100, 50);
Группы наследуют свойства своих дочерних объектов, что упрощает анимацию и трансформацию нескольких элементов одновременно.
Анимация в Two.js строится на функции bind или методе
update:
two.bind('update', function(frameCount) {
circle.rotation += 0.02;
}).play();
Каждый кадр можно изменять координаты, поворот или масштаб объектов.
play() запускает цикл рендеринга. При необходимости можно
использовать pause() и resume() для контроля
анимации.
Two.js поддерживает стандартные CSS-цвета и градиенты. Для градиента
создается объект Two.LinearGradient или
Two.RadialGradient:
const gradient = new Two.LinearGradient(0, 0, 100, 100, [
new Two.Stop(0, '#FF0000'),
new Two.Stop(1, '#0000FF')
]);
circle.fill = gradient;
Градиенты позволяют плавно смешивать цвета внутри фигуры, что расширяет визуальные возможности сцены.
Two.js тесно интегрируется с DOM и позволяет отслеживать события через элемент, к которому прикреплен рендер:
two.renderer.domElement.addEventListener('click', function(event) {
const rect = two.renderer.domElement.getBoundingClientRect();
const x = event.clientX - rect.left;
const y = event.clientY - rect.top;
console.log(`Клик в точке: ${x}, ${y}`);
});
В сочетании с координатами объектов можно реализовать интерактивные элементы, перетаскивание и реагирование на курсор.
Все объекты Two.js рендерятся в DOM (SVG) или на canvas. Для их анализа и отладки полезны встроенные возможности браузеров:
FPS) и нагрузку на
анимацию.Использование этих инструментов ускоряет выявление проблем с рендерингом, позиционированием и анимацией.
Для рендеринга на canvas:
two.update() и
two.clear() для контроля сцены.Two.js позволяет экспортировать сцены в форматы SVG или PNG:
// SVG
const svgData = two.renderer.domElement.outerHTML;
// PNG через canvas
const canvas = two.renderer.domElement;
const dataURL = canvas.toDataURL('image/png');
Это удобно для генерации графики, создания спрайтов или подготовки сцен к публикации в веб-приложениях.
В браузере можно:
getBoundingClientRect().translation, rotation и
scale.Такой подход ускоряет отладку сложных анимационных сцен и помогает выявлять пересечения объектов, ошибки координат и неожиданные визуальные эффекты.