Всем доброго дня!
Всё таки довольно таки странный вопрос, но мне хочется как бы всё по правильному. Вот обычный код для каждой программы:

Код AS3:
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class main extends MovieClip
{
public function main()
{
if(stage)
Start();
else
addEventListener(Event.ADDED_TO_STAGE,OnAddedToStage);
}
private function OnAddedToStage(_event:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE,OnAddedToStage);
Start();
}
private function Start():void
{
}
}
}
Вроде всё понятно. Такой пример я видел много раз. В некоторых же примерах встречал вот так:

Код AS3:
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class main extends MovieClip
{
public function main()
{
if(stage)
Start();
else
addEventListener(Event.ADDED_TO_STAGE,OnAddedToStage);
}
private function OnAddedToStage(_event:Event):void
{
Start();
}
private function Start():void
{
}
}
}
То есть особо не уделяется внимания освобождению прослушки. Я же пишу вот так:

Код AS3:
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class main extends MovieClip
{
private var isAddedToStageListener:Boolean=false;
public function main()
{
if(stage)
{
Start();
}
else
{
isAddedToStageListener=true;
addEventListener(Event.ADDED_TO_STAGE,OnAddedToStage);
}
}
private function OnAddedToStage(_event:Event):void
{
if(isAddedToStageListener) removeEventListener(Event.ADDED_TO_STAGE,OnAddedToStage);
Start();
}
private function Start():void
{
}
}
}
Для меня конечно мой вариант правильный, так как он сам подписывает и сам отписывает (но выглядит не очень красиво). Как вообще стоит писать? Просто будет ли
Flash сам отписывать события или же многие спустя рукава на всё это смотрят?