Este post es una pequeña versión en español de un post que encontré y quise hacer lo mismo para ayudar a otros programadores en español, ya que este error tiende a ser un poco frustrante (ya he pasado por ahi jejeje)…
Cuando se está utilizando el ModuleLoader para cargar lo modulos se tiende a hacer el siguiente error…
public function loadSWFModule(swfURL:String):void
{
var moduleLoader:ModuleLoader = new ModuleLoader();
moduleLoader.url = swfURL;moduleLoader.addEventListener(ModuleEvent.READY,onModuleLoaded);
moduleLoader.addEventListener(ModuleEvent.ERROR,onModuleError);
moduleLoader.addEventListener(ModuleEvent.PROGRESS,onProgress);
moduleLoader.loadModule();
}
Se ve todo normal, pero la variable ModuleLoader tiene su Scope o existirá solo dentro de la funcion loadSWFModule, este pequeño error provoca que el module loader sea recolectado por el GarbageCollector a pesar de tener los listeners.
Esto puede causar que:
- El modulo no se cargue la primera vez, pero si la segunda
- El evento ModuleEvent.READY nunca se despache
- ModuleInfoProxy nunca escuche el evento ModuleEvent.READY despachado por ModuleInfo
- ModuleInfo.clearLoader() lanze un error (#2029)
la recomendacion es que declaren la variable moduleLoader como global y no dentro de la función.
Espero que les sea de ayuda, como lo hubiese sido para mi en su momento