Pregunta

Me carga en ActionScript en un archivo SWF. Hasta el momento no hay problema, pero no he encontrado una manera de un acceso de la misma de funciones, lo mejor sería si pudiera acceder a la función principal en la parte mxml del SWF.

Este es el código del archivo principal mxml que pertenece a la SWF que se debe cargar y acceso a otro 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>

La sentencia if "si (swfApp.hasOwnProperty (" initApp ")) {" no es verdadera y la llamada "swfApp.initApp ()" dice que esta función no existe.

En la versión original añadí detectores de eventos para HTTPStatusEvent.HTTP_STATUS, IOErrorEvent.IO_ERROR y SecurityErrorEvent.SECURITY_ERROR. Pero a excepción de HTTP_STATUS = 0 ninguno de ellos se llama.

Es la idea de la forma en que trato de hacer este mal?

¿Fue útil?

Solución

encontrado una solución algunos días después de que el mensaje:)

Después se carga el swf se puede utilizar el siguiente código para acceder a las funciones internas (en este ejemplo initApp ()):

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

getInnerSWF().initApp();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top