Похоже, вам просто нужно получить ссылку на контент, загруженный загрузчиком. Это работает так:
var movieClip:MovieClip;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.load(new URLRequest("mySwf.swf"));
function completeHandler(e:Event):void {
movieClip = MovieClip(loader.content); // this extracts the movieclip.
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
loader = null // prepares the loader for garbage collection.
process();
}
function process():void {
movieClip.addEventListener(MouseEvent.CLICK, clickHandler);
}
function clickHandler(e:MouseEvent):void {
trace("You just clicked your loaded .swf!");
}
Отсюда вы просто должны быть в состоянии прослушать ваше собственное событие. Я проверю позже, чтобы увидеть, если вам повезет, у меня нет времени, чтобы создать полный тестовый пример прямо сейчас.
Заметьте одно - вы видите, что я разыгрываю loader.content как MovieClip, просто потому, что это безопасный, динамический базовый класс для любого загруженного .swf. Поскольку MovieClip является динамическим, вы можете пытаться получить доступ к методам и свойствам этого класса без их явного определения.
Если вы решите, что вам требуется более сложный набор данных, у вас есть несколько вариантов. Вы можете создать интерфейс, который будет скомпилирован в оба приложения (родительский .swf и дочерний .swf), а затем использовать loader.content в качестве этого интерфейса. Или (и я просто размышляю сейчас, я никогда не пробовал это, но это ДОЛЖНО работать ...), вы можете дать ребенку .swf открытое свойство с именем "myClass", которое содержит ссылку на базовый класс этого .swf. .
Тогда вы сделаете то, что я делал выше, но в методе process () вы сделаете что-то вроде этого:
function process():void {
var class:Class = movieClip.myClass as Class;
var myTypedLoadedMovieClip:class = class(movieClip);
trace(myTypedLoadedMovieClip); // this SHOULD work...right?
}
Как я уже сказал, я проверю позже, чтобы увидеть, если вам повезет, и я постараюсь придумать несколько тестов для этого!