直播:http://tli-temp.heroku.com/
代码:
package tli {
import flash.events.TimerEvent;
import flash.utils.Timer;
import com.greensock.TweenMax;
import com.greensock.easing.Linear;
public class Birds {
private var birds:Array;
public function Birds():void {
birds = TLI.birds as Array;
var i:uint = 4;
while (i > 0) { new_bird(i); --i; }
}
private function new_bird(nr:uint):void {
var b:Bird = new Bird();
b.name = 'Bird nr.' + nr;
b.scaleX = 0.23;
b.scaleY = 0.23;
b.x = -100;
TLI.stage.addChild(b);
birds.push(b);
setTimeout(function():void { tween_bird( birds[0] ); birds.shift() }, rndm(5500, 500));
}
private function tween_bird(bird:Bird):void {
bird.x = -100;
bird.y = rndm(TLI.stage.stageHeight - TLI.sea.height - 80, 50);
TweenMax.to( bird, rndm(55,35), {
x: TLI.stage.stageWidth + 100, ease: Linear.easeNone,
onComplete: tween_bird, onCompleteParams: [bird]
});
}
private function rndm(max:uint, min:uint=0):uint { return Math.floor( Math.random() * (max-min) ) + min }
}}
任何人都知道如何解决这个问题?
答案 0 :(得分:0)
此:
var t:Timer = new Timer(wait_time, 1);
在函数范围内创建一个计时器。当函数超出范围时,计时器将成为垃圾收集的候选者。计时器可能是垃圾收集的,完整的事件永远不会触发。
setTimeout()调用是安全的,可能就是你所需要的。
不确定这是否是您所看到的问题,但这可能是您可能想要解决的问题。