На этот вопрос уже был принят ответ, прежде чем я смог опубликовать свой ответ, но я все равно отвечу.
Вы можете добавить внутренний объект Timer к вашему объекту SnowFlake, который после завершения удаляет SnowFlake из контейнера родительского экранного объекта. Вот пример:
package
{
import flash.display.Sprite;
import flash.display.TriangleCulling;
import flash.events.Event;
import flash.utils.Timer;
public class Main extends Sprite
{
private var _spawnTime:int = 5;
private var _spawnTimeCounter:int;
private var _triangles:Vector.<Triangle>;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
_triangles = new Vector.<Triangle>();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(e:Event):void
{
if (_spawnTimeCounter > _spawnTime)
{
var triangle:Triangle = new Triangle(random(1, 5), 3000)
triangle.x = random(0, stage.stageWidth);
addChild(triangle);
triangle.drop();
_spawnTimeCounter = 0;
}
_spawnTimeCounter++;
}
private function random(min:Number, max:Number):Number
{
return Math.floor((Math.random() * ((1 + max) - min)) + min);
}
}
}
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
internal class Triangle extends Sprite
{
public var speed:Number;
private var _delay:Number;
private var _timer:Timer;
public function Triangle(speed:Number = 1, delay:Number = 0)
{
this.speed = speed;
_delay = delay;
init();
}// end function
public function init():void
{
graphics.beginFill(0xFFFFFF);
graphics.lineStyle(2, 0x000000);
graphics.drawTriangles(Vector.<Number>([0, 20, 15, 0, 30, 20]));
graphics.endFill();
}// end function
public function drop():void
{
if (parent && !hasEventListener(Event.ENTER_FRAME))
{
addEventListener(Event.ENTER_FRAME, onEnterFrame);
if (_delay > 0)
{
_timer = new Timer(_delay, 1);
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
_timer.start();
}// end if
}// end if
}// end function
public function remove():void
{
if (parent) parent.removeChild(this);
}// end function
private function onEnterFrame(e:Event):void
{
y += speed;
}// end function
private function onTimerComplete(e:TimerEvent):void
{
removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
remove();
}// end function
}// end class
Если запустить код, вы можете увидеть непрерывно падающие снежные хлопья (треугольники), падающие с различной скоростью, но каждая снежная хлопья исчезает через 3 секунды.