В библиотеке Lottie Web ключевым объектом управления
анимацией выступает экземпляр, возвращаемый функцией загрузки
композиции. Именно он предоставляет доступ к методам навигации по
временной шкале, среди которых особое значение имеют
goToAndStop и goToAndPlay.
Обе функции позволяют переводить анимацию к заданному кадру или времени, но различаются поведением после перехода: остановкой или продолжением воспроизведения.
Анимация в Lottie строится на временной шкале, где каждый кадр соответствует определённому моменту времени композиции. Управление может осуществляться:
Большинство методов, включая goToAndStop и
goToAndPlay, используют кадры как основной ориентир, если
не указано иное поведение через конфигурацию.
Метод goToAndStop переводит анимацию на указанный момент
и полностью останавливает её воспроизведение.
animation.goToAndStop(value, isFrame);
value — целевая позиция на временной шкале
isFrame — логический флаг интерпретации
значения:
true — значение рассматривается как кадрfalse — значение рассматривается как время в
секундахПосле вызова выполняется:
Анимация остаётся в статичном состоянии до явного вызова методов
управления (play, goToAndPlay,
stop и др.).
Метод применяется в ситуациях, где требуется фиксированное состояние анимации:
import lottie from "lottie-web";
const animation = lottie.loadAnimation({
container: document.getElementById("anim"),
renderer: "svg",
loop: false,
autoplay: false,
path: "animation.json"
});
animation.goToAndStop(45, true);
В данном случае анимация переходит на 45-й кадр и фиксируется в этом состоянии.
animation.goToAndStop(1.5, false);
Здесь позиция интерпретируется как 1.5 секунды от начала композиции.
После вызова метод блокирует прогресс анимации. Даже если ранее было активное воспроизведение, оно прерывается.
Переход выполняется мгновенно без промежуточной анимации между текущим и целевым кадром.
При включённом loop: true метод всё равно приводит
анимацию в статическое состояние.
Метод goToAndPlay выполняет аналогичное перемещение по
временной шкале, но с последующим автоматическим продолжением
воспроизведения.
animation.goToAndPlay(value, isFrame);
value — целевая позиция (кадр или время)isFrame — режим интерпретации значенияПосле вызова выполняется последовательность:
Таким образом, метод используется для запуска анимации не с начала, а с произвольной позиции.
Метод особенно полезен в следующих случаях:
animation.goToAndPlay(120, true);
Анимация перемещается на 120-й кадр и продолжает проигрывание до конца композиции или до остановки.
animation.goToAndPlay(2.3, false);
Композиция начинает воспроизведение с позиции 2.3 секунды.
goToAndStop — фиксирует состояниеgoToAndPlay — запускает воспроизведение| Характеристика | goToAndStop | goToAndPlay |
|---|---|---|
| Переход по времени | да | да |
| Остановка | полная | отсутствует |
| Запуск воспроизведения | нет | да |
| Использование в UI | статичные состояния | интерактивные сцены |
Оба метода поддерживают два режима интерпретации параметра:
Используется чаще всего, так как Lottie изначально оперирует frame-based структурой.
animation.goToAndStop(10, true);
animation.goToAndPlay(10, true);
Позволяет работать в секундах, что удобно при синхронизации с аудио или внешними таймлайнами.
animation.goToAndStop(0.75, false);
animation.goToAndPlay(0.75, false);
Запускает воспроизведение с текущей позиции. В отличие от
goToAndPlay, не выполняет перемещения по таймлайну.
Полностью останавливает анимацию без изменения текущего кадра.
Фиксирует текущее состояние без сброса прогресса.
Ключевое различие заключается в том, что goToAndPlay
всегда изменяет позицию:
play() — продолжает с текущего кадраgoToAndPlay() — устанавливает новый кадр и запускает
воспроизведениеВ сложных интерфейсах методы часто комбинируются:
goToAndStopgoToAndPlayПример логики:
animation.goToAndStop(0, true);
// ожидание действия пользователя
animation.goToAndPlay(0, true);
При создании интерактивных анимаций Lottie часто используется как управляемый таймлайн, где:
goToAndStop формирует состояния интерфейсаgoToAndPlay обеспечивает переходы между
состояниямиТакая модель применяется в:
Перемещение происходит к ближайшему доступному кадру, если указано дробное значение в frame-режиме.
SVG, Canvas и HTML-рендереры могут незначительно различаться в производительности при резких переходах.
Вызов методов допустим только после полной загрузки композиции, иначе возможны некорректные состояния таймлайна.
const animation = lottie.loadAnimation(...);
animation.goToAndPlay(50, true); // ошибка, если данные ещё не загружены
Передача секунд при isFrame = true приводит к смещению в
неожиданные кадры.
В много-сценарных анимациях методы позволяют реализовать систему состояний:
goToAndStopgoToAndPlayТакая модель заменяет необходимость внешнего state machine в простых интерфейсах.
При loop: true:
goToAndStop прерывает циклgoToAndPlay продолжает цикл с указанной точкиПри этом цикл не перезапускается автоматически, а продолжает текущее поведение композиции.
Методы часто используются для привязки к событиям:
В таких сценариях таймлайн становится отражением состояния интерфейса, где:
goToAndStop фиксирует промежуточные состоянияgoToAndPlay реализует переходы между ними