如何使用计时器一次启动多个影片剪辑,然后如果它们的长度不同则循环播放,以便它们再次重新同步?
例如,假设在t = 0时,启动了3个影片剪辑。影片剪辑1长达3秒。电影剪辑2长6秒。电影剪辑3长达10秒。影片剪辑1将在影片剪辑2和3之前结束,但我不希望它重新启动,直到其他人都完成。
此外,是否可以设置倒计时,以便在持续时间之后但在特定时间之后启动影片剪辑?例如,不是让计时器倒计时从10秒开始然后播放,而是倒计时直到中午12点,然后播放影片剪辑。如果可以,有人可以告诉我怎么做?
提前致谢。
答案 0 :(得分:0)
以下是我将如何解决您的第一个问题 - 只需将所有动画MovieClip添加到mcs
数组中。
var mcs:Array = [mc1,mc2,mc3];
// work out the longest running MovieClip
var longest:MovieClip = mcs[0];
var i:MovieClip;
for each(i in mcs)
{
if(i.totalFrames > longest.totalFrames) longest = i;
i.addEventListener(Event.ENTER_FRAME, animation);
}
/**
* Check animation progress on each MovieClip
*/
function animation(e:Event):void
{
var m:MovieClip = MovieClip(e.target);
if(m.currentFrame == m.totalFrames)
{
m.stop();
if(m == longest)
{
var i:MovieClip;
for each(i in mcs)
{
i.gotoAndPlay(1);
// your own actions here
// for when all animation completes
}
}
}
}
至于后一个问题,我不确定你为什么要这样做,但这是一个简单的方法:
var d:Date = new Date();
var time:String = d.getHours() + ":" + d.getMinutes();
var ran:Boolean = false;
if(time == "12:00" && !ran)
{
ran = true;
// being your animations etc
}
答案 1 :(得分:0)
将此代码用于最长剪辑:
longestClip.addFrameScript(longestClip.totalFrames, restartAllMyClips);
restartAllMyClips是一个将重启它们的函数。
有意义吗?
对于时间问题 - 你可以让上面的代码调用一个名为waitAndPlay(time)的函数
基本上在该函数中,您可以计算该时刻与作为参数传递的时间之间的时间量。
然后你只需为这段时间设置一个Timer。在该计时器上设置一个侦听器以执行restartAllMyClips。
这样的事情:
var waitTimer:Timer = new Timer(duration, 1);
waitTimer.addEventListener(TimerEvent.TIMER_COMPLETE, restartAllMyClips);
waitTimer.start();
以下是addFrameScript() - http://blog.rackdoll.nl/?p=118
的一些信息