Frage

i in Actionscript eine SWF-Datei laden. Bisher kein Problem, aber ich habe keine Möglichkeit, den Zugriff auf eine seiner Funktionen gefunden, das Beste, was wäre, wenn ich die Hauptfunktion im mxml Teil der swf zugreifen konnte.

Hier ist der Code der Haupt-MXML-Datei, die auf die swf gehört, das ein anderes swf laden und den Zugang sollte:

<?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>

Die if-Anweisung "if (swfApp.hasOwnProperty (" initApp ")) {" ist nie wahr und der Ruf „swfApp.initApp ()“, sagt, dass diese Funktion nicht vorhanden.

In der ursprünglichen Version hinzugefügt I Ereignis-Listener für HTTPStatusEvent.HTTP_STATUS, IOErrorEvent.IO_ERROR und SecurityErrorEvent.SECURITY_ERROR. Aber mit Ausnahme von HTTP_STATUS = 0 keine von ihnen genannt werden.

Ist die ganze Idee, wie ich versuche, dieses Unrecht zu tun?

War es hilfreich?

Lösung

Found a solution some days after the post :)

After the swf is loaded you can use the following code to access the internal functions (in this example initApp()):

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

getInnerSWF().initApp();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top