Flex 3 (скрипт действий): Как получить доступ к функции из загруженного SWF-файла?
-
03-10-2019 - |
Вопрос
Я загружаю в Actionscript файл SWF. До сих пор нет проблем, но я не нашел способ получить доступ к одному из его функций, лучшее, что если бы я мог получить доступ к главной функции в части MXML SWF.
Вот код основного файла MXML, который принадлежит SWF, который должен загрузить и получить доступ к другому SWF:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="basket();">
<mx:Script>
<![CDATA[
import mx.controls.SWFLoader;
private function basket(): void
{
var swfLoader: SWFLoader = new SWFLoader();
swfLoader.addEventListener( Event.COMPLETE, handleSWFLoaded );
try {
swfLoader.load( "../../data/InternalSWF.swf" );
} catch (error: Error) {
trace( "Couldn't load file !" );
}
}
private function handleSWFLoaded( event: Event ): void
{
var swfApp:* = event.target.content;
// This both ways don't work...
//if (swfApp.hasOwnProperty("initApp")) {
// var initApp:Function = (swfApp["initApp"] as Function);
// initApp();
//}
// swfApp.initApp();
}
]]>
</mx:Script>
<mx:Text id="output" width="100%" textAlign="center" />
</mx:Application>
If-stail "if (swfapp.hasownproperty (initapp.hasownproperty (initApp")) {"никогда не правда, и вызов« SWFAPP.InitApp () »говорит, что эта функция не существует.
В оригинальной версии я добавил слушателей событий для httpstatusevent.http_status, ioerrorevent.io_error и securityeRorevent.security_Error. Но за исключением http_status = 0 ни один из них называется.
Вся идея о том, как я пытаюсь сделать это неправильно?
Решение
Нашел решение через несколько дней после поста :)
После того, как SWF загружен, вы можете использовать следующий код для доступа к внутренним функциям (в этом примере INITAPP ()):
public function getInnerSWF():Object
{
var sysMan:SystemManager = swfLoader.content as SystemManager;<br>
return sysMan.document;
}
getInnerSWF().initApp();