Les comento que tengo un problema ahora que regreso a programar en Flash
El proyectito es crear un reproductor de swf's dinámicamente, es decir que yo le pase una lista y con AS se carguen a memoria y se vayan reproduciendo uno detrás de otro.
El problema es que después de algún tiempo la memoria llega a su límite y hay que cerrar la aplicación porque queda congelada
¿Cual es mi procedimiento?
1. Bajar la lista con un URLRequest y URLLoader. Esta información es colocada en un array.
2. Con otro URLRequest y un Loader cargo a memoria el swf que corresponde.
3. Cuando el listener correspondiente me indica que ya cargó le doy AddChild al contenido del Loader que previamente es almacenado en un MovieClip. Es decir hago esto:
Código :
Movie = MovieClip(Cargador.content); Movie.gotoAndStop(1); Cargador.unloadAndStop(); addChild(Movie);
4. Utilizo un Timer global que en un tiempo determinado regresa a la misma función que carga el siguiente swf y que a su vez cargará el siguiente y asi sucesivamente. Es un loop en pocas palabras ya que al llegar al final de la lista reinicio el conteo.
5. Los Listeners son removidos al finalizar su uso y el Loader le aplico UnloadAndStop() cuando pasé su contenido a la variable Movie.
He hecho de todo para que Flash no se convierta en un monstruo come memoria peeeeerooo no lo he logrado
He aquí algunas de las cosas que he intentado:
1. Un array que contenga todos los swf's y solo darle AddChild y RemoveChild cuando haya terminado.
2. Cargar el swf que corresponde, al terminar descargarlo y cargar el nuevo. AddChild y RemoveChild correspondientes.
3. Cargar todos los swf's a memoria sin reproducirlos para ver si varía la memoria. Resultado: Mientras no se agreguen a escena y se reproduzcan no hay aumento.
Debo aclarar que he programado tomando en cuenta el uso de WeakReferences y además he removido los Listeners que utilizo. Por si fuera poco en mi desesperación paso el Garbagge Collector cada vez que finaliza el ciclo aunque eso no ayuda en nada.
¿Alguna idea o sugerencia?
Mil gracias por su ayuda de antemano, sé que es mucho texto pero creo que el problema es relativamente sencillo pero aún asi no encuentro la respuesta que busco
Utilizo Flash CS4 y AS3