我如何使用计时器一次启动多个电影剪辑,然后如果它们都是不同的长度,那么如何循环它们,以便它们再次同步重新启动?
例如,在t=0,开始3个电影剪辑。影片剪辑%1的长度为3秒。影片剪辑2的长度为6秒。影片剪辑3有10秒长。影片剪辑1将在影片剪辑2和3之前结束,但我不希望在其他两个都完成之前重新启动。
例如,定时器不是从10秒开始倒计时然后播放,而是倒计时到下午12:00,然后播放电影剪辑。如果这是可能的,有人能告诉我怎么做吗?
提前谢谢。
发布于 2011-05-13 10:39:53
下面是我将如何回答您的第一个问题-只需将您所有的动画MovieClips添加到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
}发布于 2011-05-13 10:48:38
将此代码用于最长的剪辑:
longestClip.addFrameScript(longestClip.totalFrames, restartAllMyClips);restartAllMyClips是一个可以将它们全部重启的函数。
说得通吗?
对于时间问题--您可以让上面的代码调用一个名为waitAndPlay( time )的函数
基本上,在该函数中,您可以计算该时刻和您作为参数传递的时间之间的时间量。
然后,您只需为该持续时间设置一个计时器。在该计时器上设置监听程序以执行restartAllMyClips。
所以就像这样:
var waitTimer:Timer = new Timer(duration, 1);
waitTimer.addEventListener(TimerEvent.TIMER_COMPLETE, restartAllMyClips);
waitTimer.start();这里有一些关于addFrameScript()的信息-- http://blog.rackdoll.nl/?p=118
https://stackoverflow.com/questions/5986653
复制相似问题