Область просмотра в Two.js управляется через элемент
Two, который создаёт канвас и сцену. Для её
создания используется конструктор Two(params), где
params включает размеры канваса, целевой DOM-элемент и
режим рендеринга:
const elem = document.getElementById('draw-area');
const two = new Two({
width: 800,
height: 600,
type: Two.Types.svg, // или Two.Types.canvas / Two.Types.webgl
}).appendTo(elem);
svg,
canvas или webgl. WebGL обеспечивает наилучшую
производительность при работе с большим количеством объектов.appendTo прикрепляет канвас к выбранному
DOM-элементу.Two.js использует собственную координатную систему, где точка
(0, 0) по умолчанию находится в левом верхнем углу. Для
удобного управления положением объектов часто используется центр
сцены:
two.renderer.setSize(800, 600);
two.scene.translation.set(two.width / 2, two.height / 2);
two.width и two.height — размеры области
просмотра.scene.translation позволяет перемещать всю
сцену, что удобно для организации координат относительно
центра.(400, 300).Для динамического изменения размера элементов можно использовать
масштабирование сцены через
scene.scale:
two.scene.scale = 1.5; // увеличиваем все объекты в 1.5 раза
scale у
фигуры:const circle = two.makeCircle(0, 0, 50);
circle.scale = 2; // только этот круг увеличен
Two.Tween или ручное обновление в
two.update().Панорамирование реализуется через изменение
translation сцены. Это позволяет сдвигать видимую
область без перемещения объектов:
two.scene.translation.set(200, 100); // смещаем сцену на 200px вправо и 100px вниз
two.update() и циклы рендеринга:two.bind('upd ate', function(frameCount) {
two.scene.translation.x += 1; // плавный сдвиг вправо
}).play();
translation задаются в пикселях, и
положительные смещения двигают сцену вправо и
вниз.Иногда требуется, чтобы объекты, выходящие за пределы канваса, не
отображались. Для этого используется свойство clip у
группы:
const group = two.makeGroup();
group.clip = new Two.Rectangle(two.width / 2, two.height / 2, two.width, two.height);
clip задаёт прямоугольник, ограничивающий видимость
объектов в группе.Для адаптивного интерфейса Two.js позволяет привязывать размеры канваса к размерам окна браузера:
window.addEventListener('resize', () => {
two.width = window.innerWidth;
two.height = window.innerHeight;
two.renderer.setSize(two.width, two.height);
two.scene.translation.se t(two.width / 2, two.height / 2);
});
window.innerWidth и window.innerHeight —
динамически обновляют размеры.scene.translation центр сцены остаётся
корректным при изменении размеров окна.Two.js не имеет встроенной системы слоёв, но можно эмулировать слои через группы:
const background = two.makeGroup();
const foreground = two.makeGroup();
background.add(two.makeRectangle(0, 0, 800, 600));
foreground.add(two.makeCircle(0, 0, 50));
const two = new Two({ width: 600, height: 400 }).appendTo(document.body);
const group = two.makeGroup();
const circle = two.makeCircle(0, 0, 50);
group.add(circle);
group.translation.set(100, 50);
group.scale = 1.2;
two.bind('update', function() {
group.rotation += 0.01; // вращение группы
}).play();
group.translation задаёт положение всей группы.group.scale масштабирует все фигуры внутри.group.rotation позволяет вращать одновременно все
элементы группы.Эти инструменты формируют основу для гибкого управления видимой областью и позволяют создавать сложные сцены с анимацией, масштабированием и панорамированием без перемещения каждого объекта вручную.