Scrollmagic TimelineMax没有动画

Peg*_*gui 5 javascript tween greensock scrollmagic timelinemax

我试图弄清楚如何将TimelineMax与Scrollmagic一起使用。这个问题很容易解释。

我有类似的DOM元素,例如粒子的移动速度必须比滚动速度慢。

第一个实现是工作(无时间轴)

var controller = new ScrollMagic.Controller();
var $particles = $("#particles li");
$particles.each(function() {
    var tween = TweenMax.to($(this), 1, { y: -100, ease: Linear.easeNone });
    var scene = new ScrollMagic.Scene({
        triggerElement: ".wrapper",
        duration: 1000
    });
    scene.setTween(tween);
    scene.addTo(controller);
}); 
Run Code Online (Sandbox Code Playgroud)

第二种实现是“不工作”(使用时间轴)

var controller = new ScrollMagic.Controller();
var $particles = $("#particles li");
var timeline = new TimelineMax();
$particles.each(function() {
    timeline.to($(this), 1, {  y: -200, ease: Linear.easeNone });
});
var scene = new ScrollMagic.Scene({
    triggerElement: ".wrapper",
    duration: 1000
});
scene.setTween(timeline)
scene.addTo(controller);
Run Code Online (Sandbox Code Playgroud)

我想使时间表生效,但是元素没有动画。他们移动,但时机为零。

谢谢你的帮助

-CODEPENS-

https://codepen.io/anon/pen/wJOveM(多个场景)

https://codepen.io/anon/pen/dvryog?editors=1111(有时间轴不起作用)

Gur*_*ngh 2

您可以尝试使用 TimelineMax.add()方法而不是.to()第二个实现中的方法吗?所以你的代码应该是这样的:

var controller = new ScrollMagic.Controller();
var $particles = $("#particles li");
var timeline = new TimelineMax();
$particles.each(function() {
    timeline.add(TweenMax.to($(this), 1, {  y: -200, ease: Linear.easeNone }),0);
});
var scene = new ScrollMagic.Scene({
    triggerElement: ".wrapper",
    duration: 1000
});
scene.setTween(timeline)
scene.addTo(controller);
Run Code Online (Sandbox Code Playgroud)

另外,为了更好地调试,请将.addIndicators()方法添加到场景中以在屏幕上查看指示器,这对于滚动时的调试确实有帮助。您也可以尝试使用持续时间属性来查看事情是否正常工作。

更新:由于所有粒子需要同时移动,因此我,0在每个方法调用的末尾添加了一个属性.add。这确保了所有补间都在相同位置触发。您可以在这里阅读有关该position房产的更多信息:

https://greensock.com/asdocs/com/greensock/TimelineLite.html#add()

希望这次有一个有效的例子:)

https://codepen.io/anon/pen/ryROrv

希望这可以帮助。干杯。