Deprecated-методы

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


addIndicators()

Метод addIndicators() был основным инструментом для визуальной отладки сцен. Он позволял добавлять на страницу индикаторы начала и конца сцены, а также стрелки направления прокрутки.

Синтаксис (устаревший):

scene.addIndicators({
  name: "example",
  colorStart: "#ff0000",
  colorEnd: "#00ff00",
  colorTrigger: "#0000ff"
});

Особенности Deprecated:

  • В новых версиях ScrollMagic индикаторы вынесены в отдельный плагин debug.addIndicators.min.js.
  • Использование напрямую через сцену без подключения плагина больше не поддерживается.
  • Альтернатива — подключение официального плагина и вызов метода через него.

setTween() с функцией обратного вызова

Ранее метод setTween() позволял задавать анимацию с помощью функции обратного вызова, что выглядело так:

scene.setTween(function() {
  return TweenMax.to("#box", 1, {x: 100});
});

Причины устаревания:

  • Поддержка функции обратного вызова внутри setTween мешает статическому анализу кода.
  • В современных версиях рекомендуется передавать напрямую объект TweenMax/TweenLite или TimelineMax.
  • Пример корректного использования:
scene.setTween(TweenMax.to("#box", 1, {x: 100}));

loglevel()

Метод loglevel() использовался для настройки уровня логирования ScrollMagic (например, debug, warn, error).

Пример устаревшего кода:

ScrollMagic.Controller.loglevel(3);

Особенности устаревания:

  • Уровни логирования больше не настраиваются через глобальный метод контроллера.
  • Логирование рекомендуется вести через консоль браузера или сторонние библиотеки.
  • Новые версии полностью игнорируют этот метод.

destroy() без параметров

Метод destroy() предназначался для удаления сцены и всех её привязок к контроллеру. Ранее его вызов без параметров выглядел так:

scene.destroy();

Изменения в новых версиях:

  • Теперь необходимо указывать, удалять ли анимацию (reset) и удалять ли индикаторы:
scene.destroy(true); // удаляет анимацию и индикаторы
  • Игнорирование параметров может привести к оставлению DOM-элементов и утечкам памяти.

reverse() без параметров

Метод reverse() позволял включать или отключать обратную анимацию сцены при прокрутке вверх:

scene.reverse(false);

Deprecated-особенности:

  • Рекомендуется использовать свойство reverse при создании сцены:
var scene = new ScrollMagic.Scene({
  triggerElement: "#trigger",
  duration: 200,
  reverse: false
});
  • Установка через метод после создания сцены может вести себя непредсказуемо.

Альтернативы и рекомендации

  • Использование TimelineMax/GSAP 3: современные анимации лучше строить через Timeline, а не через callback-функции.
  • Подключение плагинов отдельно: индикаторы и другие инструменты отладки вынесены в отдельные плагины.
  • Явное указание параметров при destroy и reverse: это предотвращает утечки памяти и некорректное поведение сцены.
  • Обновление кода при переходе на ScrollMagic 2.x и выше: многие устаревшие методы полностью удалены, старый синтаксис не поддерживается.

Вывод

Устаревшие методы ScrollMagic следует заменять на новые подходы с учётом современных стандартов анимации и контроля сцены. Это повышает стабильность кода, совместимость с новыми версиями и упрощает поддержку сложных интерактивных интерфейсов.