我不知道如何在10-20秒之后从阵列中一次绘制一个动画片段。有五种不同的动画片段,所以没有一个动画片段是相同的。移除绘制的动画片段时,计时器需要重置,然后需要在10-20秒后从阵列中拉出另一个动画片段。绘制的movieclip可能不会再次使用,因此当从舞台中删除时,应将其从数组中删除。这些脚本位于单独的.as文件中。
这段代码已经有了计时器(归功于Kevin McGowan)
import flash.utils.setTimeout;
// Your Sprite / MovieClip
var clip:MovieClip;
// The time until you want to add the first one
var timeToAdd:uint = Math.random() * 20;
// This will be the timer
var _timer:uint;
// This will add us to the stage after the random time. Second variable is seconds, so we need to multiply by 1000.
_timer = setTimeout(addToStage, timeToAdd * 1000);
// Called when the timer expires
function addToStage():void{
clip = new MovieClip();
// You would need logic to decide when to remove it, but once it is removed this will fire
clip.addEventListener(Event.REMOVED_FROM_STAGE, onRemove);
}
// Called once removed
function onRemove(e:Event):void{
// Remove the event listener
clip.removeEventListener(Event.REMOVED_FROM_STAGE, onRemove);
// Restart the timer
timeToAdd = Math.random() * 20;
_timer = setTimeout(addToStage, timeToAdd * 1000);
}
我希望你们能帮我解决这个问题。
答案 0 :(得分:0)
你可能想要先创建一个Mcs数组......
//Add 5 MCs to array
var mcArr:Array = [];
for(var i:int = 0; i<5; i++) {
mcArr.push(new MovieClip());
}
您可以使用Array.pop()从数组中删除最后一个元素并返回该元素的值。 如果需要Array中的第一个元素,请使用Array.shift()。 将addToStage函数更改为:
function addToStage():void
{
clip = mcArr.pop();
//clip will be null after the fifth MC. Check that clip is not null before trying to add listener
if(clip)
clip.addEventListener(Event.REMOVED_FROM_STAGE, onRemove);
}