В библиотеке anime.js анимации обладают богатым
набором событий, которые позволяют отслеживать и управлять жизненным
циклом анимаций. Среди них особое место занимают события
loopBegin и
loopComplete, которые предназначены для
работы с повторяющимися анимациями.
loopBeginСобытие loopBegin вызывается в начале каждого
цикла анимации, когда она находится в режиме повторения
(loop: true или loop: N). Это полезно для
случаев, когда необходимо запускать дополнительную логику каждый раз
перед стартом очередного цикла анимации.
Синтаксис:
anime({
targets: '.box',
translateX: 250,
duration: 1000,
loop: 3,
loopBegin: function(anim) {
console.log('Начало цикла', anim.currentLoop);
}
});
Особенности:
Параметр anim содержит объект анимации, включающий
свойства:
anim.currentLoop — номер текущего цикла (от 0 до
N-1);anim.remaining — сколько циклов осталось;anim.duration — продолжительность одного цикла.Вызывается до того, как начнётся движение элементов в цикле.
Может использоваться для изменения параметров анимации на лету перед каждым повтором.
loopCompleteСобытие loopComplete срабатывает после
завершения каждого цикла анимации, что делает его идеальным для
отслеживания прогресса в многократных повторениях. Оно позволяет
выполнять действия, которые должны происходить после завершения
конкретного прохода анимации.
Пример использования:
anime({
targets: '.circle',
scale: [1, 2],
duration: 800,
loop: 4,
loopComplete: function(anim) {
console.log('Цикл завершён:', anim.currentLoop);
}
});
Ключевые моменты:
loopComplete вызывается после каждого
завершенного цикла, но перед стартом следующего, если
повторение ещё не закончилось.anim.completed позволяет определить,
завершился ли последний цикл всего повторения или анимация
продолжится.Комбинированные эффекты: Например, при анимации
вращающихся объектов можно менять цвет или размер после завершения
каждого цикла через loopComplete, создавая динамичное
ощущение изменения без остановки анимации.
Синхронизация с другими анимациями: Используя
loopBegin, можно запускать связанные анимации или
триггерить события внешних функций, синхронизированных с каждым новым
циклом.
Управление прогрессом: Легко создавать
индикаторы прогресса повторяющейся анимации, увеличивая значение или
счетчик после каждого завершенного цикла через
loopComplete.
anime.js поддерживает несколько событий одновременно:
begin — срабатывает один раз при старте анимации;complete — один раз при окончании всей анимации;loopBegin — при старте каждого цикла;loopComplete — после каждого завершенного цикла;update — на каждом кадре анимации.Комбинируя их, можно добиться сложных последовательностей и цепочек анимации без использования сторонних библиотек или таймеров.
События loopBegin и loopComplete получают
объект анимации anim, который можно использовать для
передачи кастомной информации или состояния.
Пример:
let counter = 0;
anime({
targets: '.star',
translateY: 100,
loop: 5,
loopBegin: function(anim) {
anim.starIndex = counter++;
},
loopComplete: function(anim) {
console.log('Завершён цикл для звезды', anim.starIndex);
}
});
Здесь каждому циклу можно присвоить уникальный идентификатор или индекс, что расширяет возможности управления повторяющимися анимациями.
loopBegin для инициализации
состояния цикла, подготовки визуальных эффектов или
данных.loopComplete для реакции на
завершение цикла, например, изменения внешнего вида или
логирования.Эти два события создают мощный инструмент для тонкой настройки повторяющихся анимаций, позволяя управлять каждым циклом отдельно и делать визуальные эффекты более динамичными и интерактивными.