Init вызывается откуда-то еще без передачи события в качестве аргумента.Простое решение - изменить код инициализации так, чтобы он выглядел следующим образом:
private function init(e:Event = null):void
{
}
Также вам следует изменить код ADDED_TO_STAGE, чтобы он выглядел следующим образом:
public function MainSWF():void
{
if(stage){
init();
}else{
addEventListener(Event.ADDED_TO_STAGE, init);
}
}
Если вы уже добавлены вна этапе перед добавлением прослушивателя (именно поэтому мы проверяем и определяем, определен ли этап), то вы никогда больше не будете запускать событие ADDED_TO_STAGE, если только вы не добавите / не удалите свой основной swf из временной шкалы, которую вы больше всего считаетескорее всего не буду делать.Таким образом, если вы включите этот бит кода, то имеет смысл только изменить следующий код:
removeEventListener(Event.ADDED_TO_STAGE, init);
на
if(hasEventListener(Event.ADDED_TO_STAGE)){
removeEventListener(Event.ADDED_TO_STAGE, init);
}
Очевидно, что причина проверки, чтобы увидеть, еслипрослушиватель существует потому, что мы, возможно, только что перешли прямо к функции init внутри конструктора, потому что этап уже присутствовал (то есть этот класс swf уже был добавлен в список отображения во время или до выполнения нашего кода конструктора).