В PixiJS Ticker — это системный механизм, который управляет циклом обновления приложения. Он используется для регулярного вызова функций анимации и обновления сцены с определённой частотой, измеряемой в кадрах в секунду (FPS). Ticker обеспечивает синхронизацию визуальных изменений с рендерингом, что критично для плавной анимации и корректной работы интерактивных элементов.
Ticker не зависит от конкретного рендера, но тесно
интегрирован с объектом Application, автоматически
вызывая его метод render при каждом обновлении, если это
настроено.
Для создания собственного Ticker используется класс
PIXI.Ticker:
const ticker = new PIXI.Ticker();
После создания можно добавлять функции-обработчики, которые будут вызываться на каждом кадре:
ticker.add((delta) => {
sprite.x += 1 * delta;
});
Параметр delta отражает количество
прошедших “кадров” с момента предыдущего вызова. Это позволяет
корректировать скорость анимации в зависимости от фактической частоты
кадров, обеспечивая frame-independent motion.
Запуск и остановка Ticker осуществляется методами:
ticker.start(); // Запуск цикла
ticker.stop(); // Остановка цикла
Ticker по умолчанию обновляется с частотой ~60 FPS, но её можно изменить:
ticker.maxFPS = 30;
Каждая функция, добавленная в Ticker, получает
deltaTime, который вычисляется как отношение фактической
задержки между кадрами к стандартному времени кадра:
sprite.rotation += 0.05 * delta;
Использование delta позволяет анимации оставаться
плавной даже при падении FPS.
PixiJS предоставляет глобальный Ticker.shared, который можно использовать вместо создания отдельного экземпляра. Это удобно для небольших проектов или при необходимости синхронизации нескольких объектов.
PIXI.Ticker.shared.add((delta) => {
sprite.y += 2 * delta;
});
Преимущества Ticker.shared:
Ограничения:
Для добавления функций можно использовать несколько вариантов:
ticker.add(fn, context, priority);
ticker.addOnce(fn, context);
ticker.add(fn, context, priority); // priority — порядок выполнения
ticker.remove(fn, context);
this к
нужному объекту.Пример использования при приоритете:
ticker.add(highPriorityUpdate, this, PIXI.UPDATE_PRIORITY.HIGH);
ticker.add(lowPriorityUpdate, this, PIXI.UPDATE_PRIORITY.LOW);
true для
Application.ticker).true, если Ticker
запущен.1):ticker.speed = 2; // ускоряем все анимации в два раза
Каждое приложение PixiJS автоматически создаёт Ticker, доступный
через app.ticker. Он является экземпляром Ticker и по
умолчанию запускается автоматически.
const app = new PIXI.Application({ width: 800, height: 600 });
app.ticker.add((delta) => {
sprite.x += 5 * delta;
});
Использование app.ticker и
PIXI.Ticker.shared возможно одновременно, но следует
помнить, что они управляют независимыми циклами обновления.
Ticker идеально подходит для:
AnimatedSprite.Применение delta гарантирует независимость от
частоты кадров, что делает Ticker ключевым инструментом для
любых интерактивных и динамичных приложений на PixiJS.