0

我有两个数组包含几个影片剪辑。我使用 for 循环成功地在时间线对象中注入了第一个数组。但后来我意识到,我将对第二个数组做些什么,我需要同时启动它们,并且每个数组在 x 和 y 处必须有不同的目的地。

想象一下横幅 745x100px,我需要将不同的影片剪辑从侧面动画到某个目的地。

代码示例:

import com.greensock.*;
import com.greensock.easing.*;
import flash.display.MovieClip;


var mainArray:Array = [amcMC, tantrumMC, blokMC, misMC, futMC, laoMC, cauMC, deepMC, plusMC, noMC, copMC ];
var therapyArray:Array = [kurtenMC, panacMC, dubMC, lowMC, dtoxMC, hunMC, mopMC, zenMC, hanMC, conMC ];

var timeline:TimelineMax = new TimelineMax({repeat:-1});

for(var key:String in mainArray){
   var mcMain:MovieClip = MovieClip(mainArray[key]);
   timeline.append(TweenMax.from(mcMain,1 ,{x:-200 y: 40, scaleX:0.1, blurFilter:{blurX:20}, ease:Back.easeOut}));
   timeline.append(TweenMax.to(mcMain,cas,{x:-200, y: 40, delay:1, blurFilter:{blurX:20}, ease:Back.easeOut}));   
}

我需要在第二个数组上应用稍微不同的补间并同时触发它们,或者以小偏移量触发它们。

4

2 回答 2

2

使用 insertMultiple。这允许您在时间线的同一点添加多个补间。如果您喜欢使用此方法,您甚至可以使用设置以相等的延迟将它们均匀地隔开。

这是一个例子:

var timeline:TimelineMax = new TimelineMax({repeat:2, yoyo:true, repeatDelay:1.5});
timeline.append( TweenLite.from(blackBar, 0.8, {x:550}) );
timeline.insertMultiple( TweenMax.allFrom([logo, timelineWord, maxWord, byGreenSock], 0.5, {autoAlpha:0}, 0.25), 0.6);
timeline.insertMultiple( TweenMax.allFrom(lettersArray, 1, {y:"-30", alpha:0, ease:Elastic.easeOut}, 0.04), 1.4);

来自 greensock 文档:

insertMultiple() 和 appendMultiple() 提供了一些非常强大的排序功能,允许您添加补间数组(使用 TweenLite/Max 实例或新的速记语法,如 [mc, 1, {x:100}])并可选择对齐使用 SEQUENCE 或 START 模式,甚至可以错开它们。例如,要在时间线中插入 3 个补间,对齐它们的开始时间但将它们错开 0.2 秒,

以及此处的文档链接:http: //www.greensock.com/as/docs/tween/_timelinemax.html

于 2012-01-10T19:57:33.987 回答
1

您可以使用 2 个 TimelineMax 对象和一个 Timer。向计时器添加一个侦听器,该侦听器在调用时将使用第二个数组加载第二个 TimelineMax。您的偏移量将是您将计时器延迟设置为的任何值。

于 2012-01-10T19:47:17.323 回答