В библиотеке Two.js рендеринг сцены по умолчанию осуществляется автоматически при каждом изменении объектов или параметров. Это удобно для простых анимаций, но в сложных проектах может приводить к потере производительности, если каждое изменение вызывает перерисовку сцены. Для контроля рендеринга Two.js предоставляет возможность отключения автоматического обновления и ручного управления процессом отрисовки.
autostartautostart — это ключевое свойство экземпляра Two.js,
отвечающее за автоматический запуск рендеринга при инициализации. Оно
принимает логическое значение:
const two = new Two({
width: 800,
height: 600,
autostart: false
}).appendTo(document.body);
Особенности использования:
autostart установлен в true, Two.js
сразу начинает цикл обновлений (upd ate loop), и каждый кадр
автоматически отрисовывается.autostart: false при создании экземпляра
отключает автоматическое обновление, оставляя управление рендерингом на
разработчике.update()После отключения автозапуска, для рендеринга сцены
используется метод update():
two.update();
Применение метода:
play() и
pause()Если необходимо запускать и останавливать анимацию динамически,
Two.js предоставляет методы play() и
pause():
two.play(); // Запуск анимации
two.pause(); // Остановка анимации
Особенности:
play() активирует внутренний цикл обновления,
аналогичный autostart: true.pause() останавливает цикл, позволяя в дальнейшем
вручную контролировать update().Для тонкой оптимизации можно создать собственный цикл обновления с
использованием requestAnimationFrame:
function animate() {
// Логика обновления объектов
shape.rotation += 0.01;
// Ручной рендеринг сцены
two.update();
requestAnimationFrame(animate);
}
animate();
Преимущества ручного цикла:
Отключение автозапуска позволяет обновлять только изменённые объекты, снижая нагрузку на GPU и CPU.
При ручном управлении можно запускать анимацию только при достижении определённых условий, например, после завершения расчётов физики.
При взаимодействии пользователя сцена обновляется только при событии,
например mousemove или click, что экономит
ресурсы.
canvas.addEventListener('mousemove', (event) => {
shape.translation.se t(event.clientX, event.clientY);
two.update();
});
requestAnimationFrame для
плавной анимации.play() для быстрого
прототипирования или демонстраций.| Свойство / Метод | Тип | Описание |
|---|---|---|
autostart |
Boolean | Автоматический запуск рендеринга при создании Two.js |
update() |
Method | Ручная перерисовка сцены |
play() |
Method | Запуск цикла анимации |
pause() |
Method | Остановка цикла анимации |
Эти инструменты позволяют полностью контролировать производительность и поведение анимаций в Two.js, минимизируя лишние ресурсоёмкие операции и увеличивая стабильность сложных интерактивных сцен.