В библиотеке Lottie Web отсутствует строго формализованная система
перечислений в духе TypeScript enum, однако поведение API
фактически опирается на набор устойчивых строковых и числовых значений,
которые выполняют роль констант. Эти значения определяют режимы
рендеринга, управление воспроизведением, события жизненного цикла
анимации и внутренние состояния проигрывателя.
Использование этих значений напрямую в коде приводит к повышенной хрупкости логики, поэтому в прикладной разработке обычно формируются собственные слои констант, отражающие поведение библиотеки.
Одним из ключевых наборов условных перечислений являются режимы
рендеринга, задаваемые при инициализации анимации через параметр
renderer.
Основные значения:
svg — SVG-рендерингcanvas — рендеринг через Canvas APIhtml — DOM/HTML-рендерингКаждый режим определяет стратегию построения графики:
SVG renderer
Canvas renderer
HTML renderer
Управление проигрыванием анимации в Lottie Web опирается на несколько ключевых параметров, которые фактически формируют перечисления поведения.
loop)Параметр loop поддерживает два основных типа
значений:
false — отсутствие повторенияtrue — бесконечный циклnumber — фиксированное количество повторовТаким образом, логика loop сочетает булеву и числовую семантику, что делает его гибридным перечислением.
direction)Параметр направления определяет порядок проигрывания кадров:
1 — прямое воспроизведение-1 — обратное воспроизведениеДанный механизм используется для реализации реверса анимации без пересборки данных.
autoplay)Логическое перечисление:
true — запуск сразу после загрузкиfalse — ручное управление запускомLottie Web использует событийную модель, основанную на строковых идентификаторах событий. Эти значения можно рассматривать как перечисление состояния проигрывателя и этапов загрузки.
Основные события:
data_ready — данные анимации загружены и
распарсеныdata_failed — ошибка загрузки данныхconfig_ready — конфигурация примененаDOMLoaded — DOM-структура созданаenterFrame — переход к новому кадруloopComplete — завершение циклаcomplete — завершение всей анимацииsegmentStart — начало сегментаdestroy — уничтожение экземпляраКаждое событие отражает конкретную фазу жизненного цикла AnimationItem и используется для синхронизации внешней логики.
Внутреннее состояние экземпляра анимации также можно интерпретировать как перечисление состояний, хотя оно не экспонируется как формальный enum.
Типичные состояния:
Переходы между состояниями происходят через вызовы API
(play, pause, stop,
destroy) и события жизненного цикла.
Сегменты в Lottie Web представляют собой диапазоны кадров и фактически формируют отдельную систему управления логикой воспроизведения.
Основные формы:
[startFrame, endFrame][[s1, e1], [s2, e2]]playSegmentsПоведение сегментов можно трактовать как перечисление режимов:
Функции управления:
playSegments(segments, forceFlag)setSegment(start, end)resetSegments()Lottie Web содержит механизмы управления качеством отрисовки, которые проявляются через условные уровни качества.
Основные режимы:
low — минимизация нагрузки, снижение детализацииmedium — баланс качества и производительностиhigh — максимальная точность отображенияЭти значения могут задаваться через API:
setQuality(level)Также применяются внутренние оптимизации:
Параметр speed формально числовой, однако на практике
формирует дискретные режимы поведения:
0 — остановка1 — нормальная скорость<1 — замедление>1 — ускорениеХотя значения непрерывны, типичные сценарии использования сводятся к фиксированным состояниям, что позволяет трактовать параметр как псевдо-перечисление режимов воспроизведения.
Процесс загрузки JSON-анимации также можно рассматривать как набор состояний, отражённых событиями:
Эти стадии не имеют явных констант в API, но используются через
события data_ready, data_failed и
config_ready.
Практическая работа с библиотекой часто требует формализации строковых и числовых значений в единые структуры.
Типовой подход — создание модульных констант:
RENDERER = { SVG, CANVAS, HTML }DIRECTION = { FORWARD: 1, REVERSE: -1 }LOOP_MODE = { ONCE: false, INFINITE: true }EVENT = { COMPLETE, LOOP_COMPLETE, ENTER_FRAME, ... }Такой слой устраняет прямую зависимость от “магических строк” и снижает риск ошибок при масштабировании проекта.
Все перечисленные значения формируют единый механизм управления состоянием анимации:
Эта система не формализована как строгая типизированная модель, но фактически работает как набор взаимосвязанных перечислений, определяющих поведение Lottie Web в runtime-среде.