В библиотеке SVG.js каждая анимация создается с
помощью метода .animate(), который возвращает объект
анимации. Для управления жизненным циклом анимации используются методы
stop(),
pause() и
play(). Понимание их различий критически
важно для реализации интерактивных анимаций.
stop()Метод stop() полностью завершает
текущую анимацию. После вызова stop() анимация больше не
продолжает изменять свойства объекта. Синтаксис прост:
let rect = draw.rect(100, 100).fill('#f06');
let animation = rect.animate(2000).move(300, 0);
// Остановить анимацию
animation.stop();
Особенности stop():
pause()Метод pause() временно приостанавливает
анимацию, сохраняя её текущее состояние. После паузы анимацию можно
возобновить с помощью play().
let circle = draw.circle(80).fill('#0f9');
let anim = circle.animate(3000, '<>').move(400, 0);
// Приостановка через 1 секунду
setTimeout(() => anim.pause(), 1000);
// Возобновление через 2 секунды
setTimeout(() => anim.play(), 3000);
Ключевые моменты работы pause():
play()Метод play() возобновляет ранее
приостановленную анимацию.
anim.pause(); // приостанавливаем
anim.play(); // возобновляем
Особенности:
play() не
имеет эффекта.loop() для циклических анимаций,
создавая эффект бесконечного воспроизведения с паузами.Для сложных анимационных сцен удобно комбинировать
pause(),
play() и
stop(). Пример — создание анимации,
которая останавливается при наведении и возобновляется при уходе
курсора:
let rect = draw.rect(150, 100).fill('#06f');
let anim = rect.animate(5000).move(400, 0);
rect.on('mouseenter', () => anim.pause());
rect.on('mouseleave', () => anim.play());
Примечания:
pause() и play() могут быть вызваны
многократно без создания новых объектов анимации.Объект анимации хранит внутренние свойства, позволяющие проверять её состояние:
animation.stopped — true, если анимация была
остановлена stop().animation.paused — true, если анимация в паузе.animation.finished — true, когда анимация завершена
естественным образом.Пример проверки состояния:
if (!anim.paused && !anim.stopped) {
anim.pause();
}
loop() и pause().Эти инструменты делают управление анимациями гибким и позволяют создавать интерактивные интерфейсы с точным контролем времени и состояния объектов.