Для работы с Two.js первым шагом является создание экземпляра сцены. Это позволяет определить размеры холста и метод рендеринга (SVG, Canvas или WebGL):
const two = new Two({
width: 800,
height: 600,
type: Two.Types.canvas // можно использовать Two.Types.svg или Two.Types.webgl
}).appendTo(document.body);
Ключевые моменты:
width и height задают размеры визуальной
области.type определяет способ рендеринга графики, влияя на
производительность и качество.В Two.js объекты позиционируются через свойства
translation.x и translation.y. Это определяет
точку центра объекта на сцене.
const circle = two.makeCircle(0, 0, 50);
circle.translation.set(200, 150);
translation.x – горизонтальная координата.translation.y – вертикальная координата.set(x, y) позволяет одновременно задавать обе
координаты.Примечание: В Two.js координатная система начинается с верхнего левого угла холста (0,0).
Для упрощения управления несколькими объектами применяются
группы (Two.Group). Позиция группы влияет
на все её дочерние элементы:
const group = two.makeGroup();
group.translation.set(300, 200);
const rect = two.makeRectangle(0, 0, 100, 50);
const ellipse = two.makeEllipse(50, 50, 60, 30);
group.add(rect, ellipse);
Помимо свойства translation, объекты имеют
position, которое является псевдосвойством для чтения и
записи координат:
circle.position.x = 400;
circle.position.y = 300;
position удобен для динамических изменений и
анимаций.position автоматически обновляют
translation.Позиция объекта в Two.js влияет на его точку вращения. По умолчанию центр объекта совпадает с точкой вращения:
circle.rotation = Math.PI / 4; // поворот на 45 градусов
translation.origin:circle.origin.set(50, 50); // смещаем точку вращения относительно центра
Two.js позволяет плавно анимировать перемещение объектов с помощью
two.update() или внешних библиотек:
let x = 0;
two.bind('upd ate', function() {
circle.translation.x = x;
x += 1;
}).play();
bind('upd ate', callback) регистрирует функцию,
вызываемую каждый кадр.translation можно изменять для создания
сложных движений.Для создания иерархий объектов используется относительное позиционирование через группы:
const parent = two.makeGroup();
const child = two.makeRectangle(0, 0, 50, 50);
child.translation.se t(100, 50);
parent.add(child);
parent.translation.se t(200, 200);
scale.translation, origin и групп.Для упрощения позиционирования объектов относительно друг друга часто используют сетку или направляющие:
const gridSize = 50;
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 8; j++) {
const dot = two.makeCircle(i * gridSize, j * gridSize, 5);
dot.fill = '#999';
}
}
translation для изменения положения
объектов.origin при поворотах и масштабировании.update.Такой подход обеспечивает точное, гибкое и масштабируемое управление положением объектов на сцене в Two.js.