Метод setTween является ключевым инструментом библиотеки
ScrollMagic для создания анимаций, привязанных к
прокрутке страницы. Он позволяет связывать сцену (Scene) с
анимацией, управляемой библиотеками типа GSAP
(TweenMax, TweenLite,
TimelineMax, TimelineLite) или с нативными
CSS-свойствами через объект анимации.
scene.setTween(tween, duration, params);
Где:
tween – объект анимации (например, созданный через
gsap.to или gsap.from), либо объект с
CSS-свойствами.duration – опциональный параметр, задающий длительность
анимации в пикселях прокрутки сцены (не применяется, если tween – это
объект GSAP с Timeline).params – объект с дополнительными настройками анимации
(например, { ease: Power1.easeInOut }).Пример использования с GSAP:
var tween = gsap.to("#box", { x: 300, rotation: 360, duration: 2 });
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 500
})
.setTween(tween)
.addTo(controller);
В этом примере объект #box будет двигаться и вращаться
по мере прокрутки, пока сцена длиной 500 пикселей активна.
Метод setTween может работать и с чистыми
CSS-свойствами, без GSAP. В этом случае используется объект вида
{ property: value }.
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 400
})
.setTween("#box", { opacity: 0, x: 200 })
.addTo(controller);
Здесь #box будет плавно смещаться по оси X и уменьшать
прозрачность при прокрутке сцены.
Важно: для CSS-анимации ScrollMagic автоматически интерполирует значения свойств от текущего состояния до заданного. Это подходит для базовых трансформаций и прозрачности, но сложные анимации лучше реализовывать через GSAP.
setTween тесно интегрирован с ScrollMagic
Scene. Сцена определяет:
Пример с использованием смещения:
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 600,
offset: 100
})
.setTween("#box", { scale: 2, rotation: 180 })
.addTo(controller);
В этом случае анимация начнется, когда верхняя граница триггерного элемента отступит на 100 пикселей от начала viewport, и продолжится на протяжении 600 пикселей прокрутки.
Если требуется последовательность анимаций, setTween
может принимать Timeline от GSAP. Это позволяет
комбинировать несколько действий в одном блоке.
var timeline = gsap.timeline();
timeline.to("#box", { x: 200, duration: 1 });
timeline.to("#box", { rotation: 360, duration: 1 });
timeline.to("#box", { scale: 1.5, duration: 1 });
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 900
})
.setTween(timeline)
.addTo(controller);
Timeline обеспечивает плавное выполнение нескольких шагов анимации по мере прокрутки сцены. Каждая анимация автоматически синхронизируется с общей длительностью сцены.
Обратное выполнение анимации При прокрутке назад
метод setTween автоматически воспроизводит анимацию в
обратном порядке.
Лупинг и повторение Для Timeline можно
использовать стандартные опции GSAP (repeat,
yoyo) для создания циклических эффектов.
Интеграция с ScrollMagic events Через
.on("progress") или .on("enter") можно
контролировать состояние tween вручную:
scene.on("progress", function(e) {
console.log("Progress:", e.progress);
});
setTween, чтобы избежать просадки FPS.timeline, объединяя несколько tween’ов.TweenMax →
gsap.to/gsap.from).Метод setTween обеспечивает гибкую и мощную
привязку анимаций к прокрутке, позволяя создавать интерактивные
эффекты с высокой степенью контроля и синхронизации между событиями
страницы и визуальными элементами.