0

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 ステートメント "if (swfApp.hasOwnProperty("initApp")) {" は真になることはなく、呼び出し "swfApp.initApp()" はこの関数が存在しないことを示しています。

元のバージョンでは、HTTPStatusEvent.HTTP_STATUS、IOErrorEvent.IO_ERROR、および SecurityErrorEvent.SECURITY_ERROR のイベント リスナーを追加しました。ただし、HTTP_STATUS = 0 を除いて、それらのどれも呼び出されません。

私がこれを間違ってやろうとする方法の全体的な考えはありますか?

4

1 に答える 1

0

投稿の数日後に解決策が見つかりました:)

swfがロードされたら、次のコードを使用して内部関数(この例ではinitApp())にアクセスできます。

public function getInnerSWF():Object
{
  var sysMan:SystemManager = swfLoader.content as SystemManager;<br>
        return sysMan.document;
}

getInnerSWF().initApp();
于 2010-05-31T07:27:14.850 に答える