Если вы хотите загрузить классы из SWF, вам нужно сделать что-то вроде (в вашем обработчике событий):
var li:LoaderInfo = e.target as LoaderInfo; // get the loaderInfo object from the event
var swf:MovieClip = li.loader.content as MovieClip; // get the swf
var c:Class = swf.loaderInfo.applicationDomain.getDefinition( "LibA" ) as Class; // get the class definition for LibA
Создание нового c
должно дать вам LibA
объект.Вам понадобится полное определение класса в качестве имени.
Если я понимаю, что вы пытаетесь сделать, я уверен, что вы можете настроить SWC для встраивания внешней библиотеки - это выполучить завершение кода, но ни один из классов не включен, и SWC ищется во время выполнения.
EDIT
Только что попробовал что-то вроде того, что вы делаете.В моем примере выше, когда вы создаете c
, если вы отследите его, он отследит LibA
.Однако, если вы явно ссылаетесь на него, вы получите ошибку, которую вы описали.Я думаю, это связано с тем, что Flash путается с двумя определениями LibA
- тем, на которое ссылались, и тем, которое вы загружаете - они находятся в 2 разных доменах приложения.
Исправление@turbosqel описывает это, загрузите его с помощью LoaderContext
объекта:
var l:Loader = new Loader();
var context:LoaderContext = new LoaderContext( false, ApplicationDomain.currentDomain );
l.contentLoaderInfo.addEventListener(Event.COMPLETE, this._onLoadComplete );
l.load(new URLRequest("./libs/build/liba.swf"), context);
Это работает для меня, теперь я могу явно ссылаться на класс LibA
.