Константы и перечисления

В библиотеке Lottie Web отсутствует строго формализованная система перечислений в духе TypeScript enum, однако поведение API фактически опирается на набор устойчивых строковых и числовых значений, которые выполняют роль констант. Эти значения определяют режимы рендеринга, управление воспроизведением, события жизненного цикла анимации и внутренние состояния проигрывателя.

Использование этих значений напрямую в коде приводит к повышенной хрупкости логики, поэтому в прикладной разработке обычно формируются собственные слои констант, отражающие поведение библиотеки.


Режимы рендеринга

Одним из ключевых наборов условных перечислений являются режимы рендеринга, задаваемые при инициализации анимации через параметр renderer.

Основные значения:

  • svg — SVG-рендеринг
  • canvas — рендеринг через Canvas API
  • html — DOM/HTML-рендеринг

Каждый режим определяет стратегию построения графики:

SVG renderer

  • Использует векторную модель
  • Подходит для масштабируемых интерфейсов
  • Обеспечивает высокую детализацию
  • Накладывает нагрузку на DOM при сложных сценах

Canvas renderer

  • Использует растровую отрисовку
  • Стабильнее при высокой сложности сцен
  • Меньше нагрузка на DOM
  • Потенциально хуже масштабируемость без потери качества

HTML renderer

  • Использует DOM-элементы
  • Исторически применяется для fallback-сценариев
  • Менее распространён в современных сборках

Константы управления воспроизведением

Управление проигрыванием анимации в 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 и используется для синхронизации внешней логики.


Состояния AnimationItem

Внутреннее состояние экземпляра анимации также можно интерпретировать как перечисление состояний, хотя оно не экспонируется как формальный enum.

Типичные состояния:

  • инициализация (initializing)
  • загрузка данных (loading)
  • готовность (ready)
  • воспроизведение (playing)
  • пауза (paused)
  • завершение (completed)
  • уничтожение (destroyed)

Переходы между состояниями происходят через вызовы 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-анимации также можно рассматривать как набор состояний, отражённых событиями:

  • инициализация запроса
  • получение данных
  • парсинг JSON
  • построение структуры слоёв
  • готовность к рендеру

Эти стадии не имеют явных констант в API, но используются через события data_ready, data_failed и config_ready.


Организация собственных перечислений поверх Lottie Web

Практическая работа с библиотекой часто требует формализации строковых и числовых значений в единые структуры.

Типовой подход — создание модульных констант:

  • RENDERER = { SVG, CANVAS, HTML }
  • DIRECTION = { FORWARD: 1, REVERSE: -1 }
  • LOOP_MODE = { ONCE: false, INFINITE: true }
  • EVENT = { COMPLETE, LOOP_COMPLETE, ENTER_FRAME, ... }

Такой слой устраняет прямую зависимость от “магических строк” и снижает риск ошибок при масштабировании проекта.


Интерпретация констант в контексте движка

Все перечисленные значения формируют единый механизм управления состоянием анимации:

  • рендеринг определяет способ визуализации
  • события задают коммуникацию между движком и внешним кодом
  • параметры воспроизведения контролируют временную шкалу
  • сегменты формируют локальные области проигрывания
  • качество регулирует компромисс между нагрузкой и визуальной точностью

Эта система не формализована как строгая типизированная модель, но фактически работает как набор взаимосвязанных перечислений, определяющих поведение Lottie Web в runtime-среде.