Система анимации в Phaser позволяет гибко управлять воспроизведением
кадров с помощью набора параметров. Среди наиболее важных —
repeat, repeatDelay, yoyo и
delay. Эти свойства определяют поведение анимации во
времени: количество повторов, паузы между циклами и характер изменения
направления кадров.
Анимации могут быть созданы через this.anims.create() и
применены к спрайту с помощью sprite.play(). Все
рассматриваемые параметры задаются на этапе создания анимации либо при
её запуске.
repeatrepeat определяет, сколько раз анимация будет повторена
после первого проигрывания.
По умолчанию значение равно 0, что означает:
Значение repeat трактуется как количество
дополнительных повторов, а не общее число циклов.
| repeat | Общее количество проигрываний |
|---|---|
| 0 | 1 раз |
| 1 | 2 раза |
| 2 | 3 раза |
| -1 | бесконечно |
Если указать:
repeat: -1
анимация будет воспроизводиться циклически до явной остановки методом
stop() или запуском другой анимации.
Это типичный сценарий для:
this.anims.create({
key: 'walk',
frames: this.anims.generateFrameNumbers('hero', { start: 0, end: 5 }),
frameRate: 10,
repeat: -1
});
В данном случае цикл кадров 0–5 будет воспроизводиться непрерывно.
repeatDelayrepeatDelay задаёт задержку (в миллисекундах) перед
началом следующего цикла анимации.
Важно понимать: задержка применяется только между повторами, а не перед первым воспроизведением.
delay).repeatDelay.this.anims.create({
key: 'blink',
frames: this.anims.generateFrameNumbers('eye', { start: 0, end: 2 }),
frameRate: 8,
repeat: 3,
repeatDelay: 1000
});
Поведение:
Без repeatDelay повторы следуют друг за другом без
временного промежутка.
yoyoyoyo определяет, будет ли анимация воспроизводиться в
обратном направлении после достижения последнего кадра.
Тип значения: boolean.
false (по умолчанию) — обычный цикл от первого к
последнему кадру.true — после завершения прямого прохода происходит
обратный проход.При yoyo: true последовательность кадров выглядит
так:
0 → 1 → 2 → 3 → 2 → 1 → 0
Таким образом создаётся эффект возврата без скачка к первому кадру.
Важно учитывать: один «повтор» включает в себя полный цикл туда и обратно.
Пример:
this.anims.create({
key: 'pulse',
frames: this.anims.generateFrameNumbers('orb', { start: 0, end: 3 }),
frameRate: 6,
repeat: 2,
yoyo: true
});
Поведение:
Использование yoyo избавляет от необходимости создавать
отдельную анимацию для обратного движения.
delaydelay задаёт задержку перед первым запуском
анимации.
Единица измерения — миллисекунды.
В отличие от repeatDelay, эта пауза применяется только
один раз — перед началом воспроизведения.
this.anims.create({
key: 'explode',
frames: this.anims.generateFrameNumbers('explosion', { start: 0, end: 7 }),
frameRate: 12,
repeat: 0,
delay: 500
});
После вызова sprite.play('explode'):
delay не влияет на интервалы между повторениями.play() задержка
применяется снова.delay действует только перед
первым циклом.this.anims.create({
key: 'signal',
frames: this.anims.generateFrameNumbers('light', { start: 0, end: 4 }),
frameRate: 10,
delay: 1000,
repeat: 3,
repeatDelay: 2000,
yoyo: true
});
Последовательность выполнения:
yoyo).delay
[прямо → обратно]
repeatDelay
[прямо → обратно]
repeatDelay
...
Такой подход позволяет реализовать сложные анимационные паттерны без использования таймеров и дополнительных обработчиков событий.
Анимация запускается методом:
sprite.play('key');
Остановить можно через:
sprite.stop();
При остановке:
repeatDelay не выполняются,delay.Если во время работы одной анимации запускается другая:
delay.Это особенно важно при управлении персонажем, когда переключение между состояниями происходит динамически.
Параметры repeat, repeatDelay,
yoyo и delay обрабатываются внутренним
менеджером анимаций Phaser и не требуют ручного контроля времени через
setTimeout или scene.time.addEvent.
Использование встроенных механизмов:
| Параметр | Назначение |
|---|---|
delay |
Пауза перед первым запуском |
repeat |
Количество дополнительных циклов |
repeatDelay |
Пауза между повторениями |
yoyo |
Обратное воспроизведение кадров |
Правильное понимание различий между delay и
repeatDelay позволяет точно контролировать временную
структуру анимации.
Гибкое комбинирование этих параметров формирует практически любой циклический сценарий: от простых повторов до сложных временных паттернов с паузами и реверсом кадров.