2

我是scrollmagic的新手,我想在不同的触发器上使用相同的补间以避免代码重复。例如:

var controller, firstTween, secondTween;

controller = new ScrollMagic;

firstTween = TweenMax.to($('body'), .1, {
  backgroundCoror: "#ff0000"
});

secondTween = TweenMax.to($('body'), .1, {
  backgroundCoror: "#ffffff"
});

controller.addScene([
  new ScrollScene({
    triggerElement: '#triggerOne'
  }).setTween(firstTween), new ScrollScene({
    triggerElement: '#triggerTwo'
  }).setTween(secondTween), new ScrollScene({
    triggerElement: '#triggerThree'
  }).setTween(firstTween), new ScrollScene({
    triggerElement: '#triggerFour'
  }).setTween(secondTween)
]);

但只工作最后两个场景。为了使它起作用,我必须在每个场景中重复补间。可以制作可重复使用的补间吗?

4

1 回答 1

1

简短回答:否 - 补间对象只能分配给一个场景,反之亦然。

为避免代码重复,请在循环中创建场景,如下所示:

var var controller, firstTween, secondTween,
triggers = ["triggerOne", "triggerTwo", "triggerThree", "triggerFour"];

controller = new ScrollMagic();

triggers.forEach(function (trigger, index) {
    // make tween
    var thistween = TweenMax.to($('body'), .1, {
        backgroundColor: (index % 2) ? "#ffffff" : "#ff0000"
    });
    // make scene
    new ScrollScene({
        triggerElement: '#' + trigger;
    })
    .setTween(thistween)
    .addTo(controller);
});

另请注意,如果触发器是连续短暂的,您可能会遇到补间相互覆盖的问题。要了解更多为什么会发生这种情况以及如何解决它,请阅读此处:
https ://github.com/janpaepke/ScrollMagic/wiki/WARNING:-tween-was-overwritten-by-another

于 2015-02-09T09:30:21.023 回答