Я работаю над приложением AIR, которое нуждается в загрузке, запуске и доступе к методам на SWF, извлеченном из сети. Использование модулей в прошлом хорошо работало, но из-за конструктивных ограничений для этого приложения это невозможно. Ниже вы можете увидеть код, в который я загружаю ImageTest.swf, затем вызываем функцию Bleh () для него.
private var l:Loader = new Loader();
private var ctx:LoaderContext;
private function onInit():void
{
l.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadComplete);
l.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onLoadError);
l.load(new URLRequest("ImageTest.swf"));
}
private function onLoadError(event:IOErrorEvent):void
{
}
private function onLoadComplete(event:Event):void
{
ui.addChild(event.target.content);
SystemManager(event.target.content).addEventListener(FlexEvent.APPLICATION_COMPLETE, swfAppComplete);
}
private function swfAppComplete(event:FlexEvent):void
{
var sys:SystemManager = SystemManager(event.currentTarget);
var app:Object = sys.application;
app.Bleh();
}
Это прекрасно работает, когда swf локально для приложения AIR, но когда ImageTest.swf на сервере отключен, он загружается нормально, но я получаю ошибку времени выполнения принудительного действия (Ошибка типа: Ошибка # 1034: Ошибка приведения типа: невозможно преобразовать _Engine_mx_managers_SystemManager @ 7c36281 в mx.managers.SystemManager) в строке:
SystemManager(event.target.content).addEventListener(FlexEvent.APPLICATION_COMPLETE, swfAppComplete);
Я полагаю, что ошибка может быть связана с проблемой изолированной программной среды, но я не уверен. Заранее спасибо!