Для работы с Two.js первым шагом является создание экземпляра
библиотеки, который будет управлять холстом и всеми графическими
объектами. Экземпляр создаётся через конструктор Two,
которому можно передать объект конфигурации:
const two = new Two({
width: 800,
height: 600,
type: Two.Types.svg // или Two.Types.canvas, Two.Types.webgl
}).appendTo(document.body);
Ключевые параметры:
width и height задают размеры холста.type определяет рендерер: SVG, Canvas или WebGL.domElement – элемент, в который будет вставлен холст
(обычно body или конкретный div).Экземпляр Two.js создаёт область, в которой размещаются все объекты. Все объекты наследуют базовые свойства от родителя, если они не переопределены локально.
Two.js использует концепцию групп
(Two.Group) для структурирования сцены. Группа позволяет
объединять несколько объектов и управлять их свойствами как единым
целым.
const group = two.makeGroup();
const circle = two.makeCircle(100, 100, 50);
const rect = two.makeRectangle(150, 150, 80, 50);
group.add(circle, rect);
two.add(group);
Особенности наследования в группах:
translation) группы влияет на все дочерние
объекты.rotation) и масштаб (scale)
группы применяются ко всем элементам внутри.fill = 'red', а круг внутри
fill = 'blue', круг будет синим.Группы обеспечивают изоляцию свойств, позволяя управлять внешним видом объектов централизованно, при этом сохраняя возможность индивидуальной настройки элементов.
Каждый объект Two.js имеет набор базовых свойств:
translation, rotation, scale,
fill, stroke, linewidth,
opacity. Свойства объекта могут быть:
Пример наследования и локальной настройки:
const parentGroup = two.makeGroup();
parentGroup.translation.set(200, 200);
parentGroup.fill = 'green';
const childCircle = two.makeCircle(0, 0, 40);
childCircle.fill = 'yellow'; // Локальное переопределение
parentGroup.add(childCircle);
two.add(parentGroup);
Здесь группа задаёт смещение и цвет по умолчанию. Круг получает позицию от группы, но цвет переопределяется локально.
Правило: Локальные свойства всегда имеют приоритет над унаследованными.
Two.js позволяет гибко управлять объектами через трансформации:
translation – смещение объекта относительно
родителя.scale – масштаб объекта; может быть отдельным по осям
(scale.x, scale.y).rotation – поворот объекта в радианах.Наследование трансформаций работает рекурсивно: все дочерние элементы получают трансформации родителя и складывают их с локальными.
const group = two.makeGroup();
group.translation.set(100, 100);
group.rotation = Math.PI / 4;
const rect = two.makeRectangle(0, 0, 50, 50);
group.add(rect);
two.add(group);
Результат: прямоугольник повернётся на 45 градусов относительно сцены, но его координаты остаются локальными внутри группы.
Для управления визуальными аспектами объектов (цвет, прозрачность, линия) используется принцип изоляции:
Пример:
const parent = two.makeGroup();
parent.opacity = 0.5;
const child1 = two.makeCircle(0, 0, 30); // наследует opacity 0.5
const child2 = two.makeCircle(60, 0, 30);
child2.opacity = 1; // локально переопределено
parent.add(child1, child2);
two.add(parent);
Результат: первый круг полупрозрачный, второй – полностью непрозрачный.
Это позволяет создавать сложные сцены с групповым управлением и индивидуальной настройкой элементов.
Two.js применяет порядок отрисовки по добавлению объектов в сцену. Группы могут содержать слои, управлять z-порядком через последовательность добавления:
const group = two.makeGroup();
const circle1 = two.makeCircle(0, 0, 40);
const circle2 = two.makeCircle(10, 10, 40);
group.add(circle1);
group.add(circle2); // отображается поверх circle1
two.add(group);
Для динамического изменения слоя используется метод
bringToFront или sendToBack:
circle1.bringToFront();
Эти методы позволяют изолировать визуальные свойства объектов внутри группы, сохраняя при этом наследуемые трансформации.
Two.js поддерживает базовую систему событий через интеграцию с DOM или Canvas. Важный принцип – объект реагирует на события независимо от родителя, если не указано иное:
circle2._renderer.elem.addEventListener('click', () => {
circle2.fill = 'red'; // локальное изменение
});
Это позволяет создавать интерактивные сцены, где каждый объект может вести себя автономно, несмотря на наследуемые свойства группы.
Эта комбинация групп, наследования и изоляции обеспечивает мощный и гибкий контроль над визуальными объектами в Two.js, позволяя строить сложные сцены с минимальным дублированием кода.