Cargar ficheros SWF basados en Flex desde otros SWF no basados en Flex

Cuando queremos cargar ficheros SWF desde aplicaciones Flex, todo funciona a la perfección con el control SWFLoader de Flex. Sin embargo, el caso contrario no es tan sencillo. Para cargar aplicaciones o películas SWF basadas en Flex desde una aplicación Flash (no basada en Flex) con ActionScript y que todo funcione correctamente y sin errores, tendremos que hacer alguna cosa adicional.
Al parecer, la carga de ficheros SWF basados en Flex desde ficheros SWF no basados en Flex no está soportada oficialmente por Adobe.
El problema gira en torno al SystemManager, y la solución es bastante sencilla, aunque nada trivial:
var flexLoader:Loader = new Loader();
addChild(loader);
flexLoader.load(new URLRequest("FlexApp.swf"));
flexLoader.addEventListener("mx.managers.SystemManager.isBootstrapRoot", systemManagerHandler);
flexLoader.addEventListener("mx.managers.SystemManager.isStageRoot", systemManagerHandler);
 
function systemManagerHandler(event:Event):void { event.preventDefault(); }
En primer lugar cargamos el SWF de Flex con un Loader. A continuación añadimos dos listeners para unos eventos que se lanzan al arranque del SystemManager. Parece ser que si el SystemManager lanza esos dos eventos y no ocurre nada, empieza a hacer cosas raras, así que lo que vamos a hacer es capturarlos y cancelarlos (con preventDefault).
Nuestra puntuación
Twittear
Compartir
Compartir
Pin