Вам нужно прослушивать Event.INIT из класса, когда он создается. (Если вы не встраиваете символ с использованием метатега Embed, Flash инициализирует загруженный мувиклип за несколько миллисекунд). Это не является проблемой, если Flash IDE swf / swc не содержит ни одного сценария действий)
Проблема в том, что иногда это может быть очень быстрым, поэтому он запускает событие INIT, прежде чем вы получите возможность присоединить прослушиватель событий к объекту. поэтому вы не можете просто прикрепить его после создания экземпляра объекта.
Обходной путь - встроить swf в виде байтового массива, а затем использовать класс загрузчика для загрузки встроенных байтов (это позволяет установить прослушиватель событий перед вызовом load).
, например
[Embed(source="assets.swf", mimeType="application/octet-stream")]
private var assetBytes:Class;
private var clip:MovieClip;
private var loader:Loader;
public function LoadBytesExample()
{
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, onAssetLoaded);
loader.loadBytes(new assetBytes());
}
private function onAssetLoaded(e:Event):void
{
var loader:Loader = (e.currentTarget as LoaderInfo).loader;
(e.currentTarget as LoaderInfo).removeEventListener(Event.INIT, onAssetLoaded);
clip = loader.content as MovieClip;
this.addChild(clip);
clip.someTextField.text = "HELLO WORLD";
}
Извините за форматирование, только что написал это с моей головы
И синтаксис для встраивания символа (вам не нужно загружать его через загрузчик, так как скрипт действия во внешнем swf / swc удаляется).
[Embed(source="assets.swf", symbol="somesymbol")]
private var assetSymbol:Class;
private var clip:MovieClip;
public function LoadSymbolExample()
{
clip = new assetSymbol();
clip.sometext.text = "Hello World";
}