Two.js — это библиотека для работы с 2D-графикой на основе JavaScript, обеспечивающая простое создание анимаций и интерактивных сцен. Для начала необходимо подключить библиотеку к проекту. Существует несколько способов:
Через CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/two.js/0.7.0/two.min.js"></script>
Через npm:
npm install two.js
После установки можно импортировать библиотеку в Jav * aScript:
import Two from 'two.js';
Основной объект библиотеки — экземпляр Two, который
управляет сценой и рендерингом. Для создания сцены используются
настройки размеров, типа рендерера и DOM-контейнера:
const elem = document.getElementById('draw-area');
const params = {
width: 800,
height: 600,
type: Two.Types.canvas // Альтернативы: svg, webgl
};
const two = new Two(params).appendTo(elem);
Ключевые моменты:
width и height задают размеры холста.type определяет рендерер: canvas,
svg или webgl.appendTo() добавляет сцену в DOM.Two.js поддерживает создание базовых графических объектов: линии, круги, прямоугольники, полигоны и группы объектов.
Круг:
const circle = two.makeCircle(400, 300, 50); // x, y, радиус
circle.fill = '#FF8000';
circle.stroke = '#000000';
circle.linewidth = 2;
Прямоугольник:
const rect = two.makeRectangle(200, 150, 100, 50); // x, y, width, height
rect.fill = '#00BFFF';
rect.stroke = '#000000';
rect.linewidth = 3;
Линия:
const line = two.makeLine(50, 50, 300, 300); // x1, y1, x2, y2
line.stroke = '#FF0000';
line.linewidth = 4;
Все объекты автоматически добавляются на сцену при создании через
make* методы.
Для удобного управления несколькими объектами используется
Group:
const group = two.makeGroup(circle, rect);
group.translation.set(100, 50); // Смещение всей группы
group.rotation = Math.PI / 4; // Поворот группы
Особенности групп:
Two.js имеет встроенный механизм анимации через метод
update и встроенный цикл bind:
two.bind('upd ate', function(frameCount) {
circle.rotation += 0.01; // Постепенный поворот
rect.translation.x += 1; // Движение по горизонтали
}).play();
Ключевые моменты:
frameCount — счетчик кадров с начала анимации.play() запускает автоматический рендеринг
сцены.two.pause().Каждый объект поддерживает свойства fill,
stroke и linewidth. Цвета можно задавать в
формате HEX, RGB или CSS-подобными строками:
circle.fill = 'rgba(255, 128, 0, 0.5)'; // Полупрозрачный оранжевый
rect.stroke = '#008000';
rect.linewidth = 5;
Two.js позволяет изменять положение, масштаб и вращение каждого элемента:
circle.translation.se t(100, 100); // Перемещение
circle.scale = 1.5; // Масштаб
circle.rotation = Math.PI / 2; // Поворот на 90 градусов
Совет: Все изменения сразу отображаются после следующего рендера сцены, не требуется явный вызов обновления для каждого свойства.
Two.js интегрируется с DOM-событиями для интерактивности:
elem.addEventListener('click', function(event) {
circle.fill = '#FF0000'; // Изменение цвета при клике
});
Можно комбинировать события с анимацией для создания интерактивных визуализаций.
Для сохранения сцены доступны методы экспорта:
two.renderer.domElement.toDataURL() — экспорт канваса в
изображение.two.renderer.domElement.outerHTML.const dataURL = two.renderer.domElement.toDataURL('image/png');
console.log(dataURL);
Объединение всех компонентов в простую программу:
const elem = document.getElementById('draw-area');
const two = new Two({ width: 800, height: 600 }).appendTo(elem);
const circle = two.makeCircle(400, 300, 50);
circle.fill = '#FF8000';
circle.stroke = '#000000';
circle.linewidth = 2;
const rect = two.makeRectangle(200, 150, 100, 50);
rect.fill = '#00BFFF';
rect.stroke = '#000000';
rect.linewidth = 3;
two.bind('update', function(frameCount) {
circle.rotation += 0.02;
rect.translation.x += 1;
if (rect.translation.x > 800) rect.translation.x = 0;
}).play();
Этот код создаёт интерактивную сцену с анимированным кругом и движущимся прямоугольником. Весь процесс от создания сцены до анимации и отображения управляется исключительно средствами Two.js, что делает библиотеку удобной для первых шагов в 2D-графике на JavaScript.