У меня есть такой код с парой классов. Появляются спрайты, а потом исчезают. У меня ничего не лагает, но если посмотреть количество "детей" у "RandCircle", то их становится все больше и больше. Удалять изнутри класса Circle у меня не получается. Что посоветуете?
RandCircle.as Основной класс.
Код AS3:
package{
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.Sprite;
public class RandCircle extends Sprite{
private var timer:Timer=new Timer(100);
private var circle:Circle;
public function RandCircle(){
timer.addEventListener(TimerEvent.TIMER,onTimer);
timer.start();
}
private function onTimer(e:TimerEvent):void{
circle=new Circle;
addChild(circle);
}
}
}
Класс Circle.as. Представляет один круг.
Код AS3:
package{
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class Circle extends Sprite{
private var timer:Timer=new Timer(150);
private var randX:Number=Math.random()*550;
private var randY:Number=Math.random()*400;
private var randR:Number=Math.random()*75+20;
public function Circle(){
drawThis();
timer.addEventListener(TimerEvent.TIMER,onTimer);
timer.start();
}
private function drawThis():void{
graphics.lineStyle(1,0x000000,1);
graphics.beginFill(0xFFCC99,1);
graphics.drawCircle(randX,randY,randR);
}
private function onTimer(e:TimerEvent):void{
if(this.alpha>=0.1){
this.alpha-=0.1;
}else{
removeChild(this);
}
}
}
}
Проблема в том, что "Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта."
Так же хотел для производительности сделать класс Circle наследуемым от Shape, но у Shape вообще нет removeChild();
Как удалять объект Circle, после того, как его непрозрачность стала меньше или равна 0.1.
Добавлено через 1 минуту
update: Попробовал с помощью TIMER_COMPLETE, но проблема остается в том же... Так же не смог сделать с помощью dispatchEvent...