Цикл рендеринга в Two.js представляет собой непрерывный процесс обновления сцены и её отображения на холсте. В основе лежит механизм анимации, позволяющий синхронизировать изменения объектов с частотой кадров, обеспечивая плавную визуализацию.
Каждый кадр цикла рендеринга проходит следующие этапы:
Two.bind('update', callback) или через
собственный метод animate.Two.js использует внутренний механизм запроса анимации браузера через
requestAnimationFrame, что гарантирует оптимальное
использование ресурсов и синхронизацию с частотой обновления экрана.
Метод update() является центральным
элементом управления сценой в Two.js. Он выполняет пересчет всех
трансформаций, положение и состояние объектов, а также обновляет
визуальные свойства перед рендерингом. Метод можно вызвать вручную, если
требуется обновить сцену без запуска полного цикла анимации.
two.update();
update()update().Two.js позволяет организовать анимацию объектов через внутренний цикл обновления. Привязка колбэков осуществляется следующим образом:
two.bind('update', function(frameCount) {
rectangle.rotation += 0.01;
}).play();
frameCount – число текущего кадра, увеличивается на
единицу при каждом вызове update().update() и отрисованы на экране.Важно понимать, что update() не выполняет автоматический
рендер: если цикл анимации не запущен через play(), сцена
останется визуально неизменной до вызова render() или
update() вручную.
Two.js позволяет регулировать скорость анимации через параметр
two.setFrameRate(fps):
two.setFrameRate(30); // ограничение 30 кадрами в секунду
Метод update() будет вызываться в соответствии с
установленным FPS при использовании встроенного метода
play().
При работе с динамическими объектами сцены (например, создаваемыми в цикле или добавляемыми по событию) важно корректно управлять их состоянием:
let circle = two.makeCircle(0, 0, 50);
two.update(); // пересчитывает положение и размеры нового объекта
update().update() гарантирует, что финальное состояние будет
отрисовано корректно.let two = new Two({ width: 800, height: 600 });two.makeRectangle(...) или
two.makeCircle(...)two.bind('update', callback)two.play()update() каждый кадр, пересчет
всех трансформаций и рендеринг сцены.Метод update() и цикл рендеринга тесно связаны: первый
обеспечивает актуальность состояния объектов, второй – их визуальное
отображение. Такой подход позволяет создавать сложные интерактивные
сцены с динамическими объектами, плавной анимацией и точным контролем
над обновлением графики.