Flex 3(アクションスクリプト):ロードされたSWFファイルから関数にアクセスする方法は?
-
03-10-2019 - |
質問
ActionScriptにSWFファイルをロードします。これまでのところ問題ありませんが、その関数の1つにアクセスする方法は見つかりませんでした。SWFのMXML部分の主な関数にアクセスできる場合、最良のことです。
これは、別のSWFをロードおよびアクセスする必要があるSWFに属するMain-MXMLファイルのコードです。
<?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-statement "if(swfapp.hasownproperty(" initapp ")){"は決して真実ではなく、「swfapp.initapp()」という呼び出しは、この関数は存在しないと言います。
元のバージョンでは、httpstatusevent.http_status、ioerrorevent.io_error、securityerrorevent.security_errorのイベントリスナーを追加しました。ただし、http_status = 0を除き、それらのどれも呼び出されません。
私がこれをどのように間違えようとしているのかという全体のアイデアはありますか?
解決
投稿の数日後に解決策を見つけました:)
SWFがロードされた後、次のコードを使用して内部関数にアクセスできます(この例ではinitapp()):
public function getInnerSWF():Object
{
var sysMan:SystemManager = swfLoader.content as SystemManager;<br>
return sysMan.document;
}
getInnerSWF().initApp();
所属していません StackOverflow