Two.js — это высокоуровневая библиотека для работы с 2D-графикой в браузере с использованием Canvas, SVG или WebGL. Управление ресурсами в Two.js начинается с правильного создания экземпляра Two, который отвечает за рендеринг сцен и хранение всех объектов графики.
const elem = document.getElementById('draw-area');
const params = {
width: 800,
height: 600,
type: Two.Types.canvas // можно использовать Two.Types.svg или Two.Types.webgl
};
const two = new Two(params).appendTo(elem);
Ключевые моменты:
Все графические объекты в Two.js являются экземплярами Two.Shape или его наследников: Two.Path, Two.Circle, Two.Rectangle и других.
const circle = two.makeCircle(400, 300, 50);
circle.fill = '#FF8000';
circle.stroke = '#000000';
circle.linewidth = 2;
Для управления большим количеством объектов удобно группировать их через Two.Group:
const group = two.makeGroup(circle);
const rect = two.makeRectangle(500, 300, 100, 50);
group.add(rect);
group.translation.set(100, 50); // перемещает всю группу
Использование групп позволяет централизованно управлять положением, масштабом и видимостью нескольких объектов.
Two.js поддерживает использование растровых изображений в качестве текстур через Two.Texture и Two.Image.
const texture = new Two.Texture('path/to/image.png');
const image = two.makeSprite(texture, 200, 150);
Особенности управления ресурсами:
texture.image.onl oad = () => {
two.update();
};
Для управления обновлением сцены и анимацией используется встроенный метод two.update() и цикл two.bind(‘update’, callback):
two.bind('update', (frameCount) => {
circle.rotation += 0.02;
}).play();
Удаление объектов в Two.js выполняется через метод remove():
two.remove(circle);
two.remove(group);
Дополнительно для очистки всей сцены используется two.clear(), что удаляет все объекты и освобождает ресурсы:
two.clear();
two.update();
Two.js управляет порядком рендеринга через порядок добавления объектов. Для точного контроля можно использовать свойства addTo() и bringToFront() / sendToBack():
rect.addTo(two.scene); // добавление на сцену
circle.bringToFront(); // вывод поверх других объектов
Ключевой момент: управление слоями влияет на визуальное перекрытие и рендеринг, а также на оптимизацию, поскольку объекты, скрытые другими слоями, всё равно могут обрабатываться CPU/GPU.
Two.js абстрагирует рендеринг, но при работе с SVG или Canvas важно учитывать особенности управления ресурсами:
<path>, <circle> и др., легко
управляются через CSS и события.Для больших сцен Two.js предлагает следующие подходы:
remove().two.update(), а не на каждом кадре.Эти методы позволяют контролировать использование памяти, CPU и GPU, обеспечивая плавную работу приложений на базе Two.js.