Un error común con la carga de modulos

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 :P

This entry was posted in Flex General. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>