Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/02/2010, 10:25
djburner
 
Fecha de Ingreso: febrero-2010
Mensajes: 7
Antigüedad: 14 años, 2 meses
Puntos: 0
Cree un monstruo chupa memoria, que puedo hacer?

Hola a todos, voy al grano, como lo dice el titulo he creado un monstruo que me está chupando la memoria como agua, a pesar que intento descargar todo (unload) no le llego a como hacer para que sea "garbage collector material".

Una película principal se encarga de manejar cuatro links (detallaré 2 porqué son la misma cosa), estos llevan a una película que puede tener hasta 30 links, cada link puede cargar un SWF externo. El asunto es que para que sólo se pudiera cargar un SWF a la vez (Tratando de evitar un desborde de SWF), todo lo cargo en un loader común (cargadorInfo:Loader) y para que a la vez pudiera quitarlo del display list lo incluyo en una Sprite común (displayInfo:Sprite). Entonces, para que cada categoria en mi pelicula principal se asegure que descarga tanto el material del loader como del display list al momento de darle click este ejecuta esta función:

Código:
function borrarInfo() 
{ 
 
   if(lista_alumnos_mc.displayInfo.numChildren > 0) 
   { 
      lista_alumnos_mc.displayInfo.removeChildAt(0); 
      lista_alumnos_mc.cargadorInfo.unload(); 
   } 
    
   if(lista_alumnos_mc.displayFondo.numChildren > 0) 
   { 
      lista_alumnos_mc.displayFondo.removeChildAt(0); 
      lista_alumnos_mc.cargadorInfo.unload(); 
   } 
    
   //************************************************************* 
    
   if(lista_colegio_mc.displayInfo.numChildren > 0) 
   { 
      lista_colegio_mc.displayInfo.removeChildAt(0); 
      lista_colegio_mc.cargadorInfo.unload(); 
   } 
    
   if(lista_colegio_mc.displayFondo.numChildren > 0) 
   { 
      lista_colegio_mc.displayFondo.removeChildAt(0); 
      lista_colegio_mc.cargadorInfo.unload(); 
   } 
        
*/Aqui sigue el mismo cuento para los otros links, pero asi ya  
/*tienen una idea del desastre que me tengo 
}
Esta función se ejecuta cada vez que uno pincha en la película principal ya sea: Clases, colegio, profesores, eventos.

El código que va en la pelicula respectiva (lista_colegio_mc, lista_alumnos_mc...), y que es el responsable de cargarme sus respectivos SWFs, es el siguiente:

Código:
var fondo_info_mc:Sprite = new FondoAlumnosMc(); 
var displayInfo:Sprite = new Sprite(); 
var cargadorInfo:Loader = new Loader(); 
var displayFondo:Sprite = new Sprite(); 
 
function loadInfoContent() 
{ 
    
   addChild(displayFondo); 
   addChild(displayInfo); 
   displayFondo.addChild(fondo_info_mc); 
   fondo_info_mc.x = 1200; 
   fondo_info_mc.y = 70; 
   cargadorInfo.x = -250; 
   cargadorInfo.y = -250; 
   TweenMax.to (fondo_info_mc, 2, {x:250, y:70, ease:Expo.easeOut}); 
} 
 
 
//LISTA DE ALUMNOS CLASE 01************************************************ 
//******************************ALUMNOS******************************************* 
//*************************************************************************************** 
 
cl01_al01_btn.addEventListener(MouseEvent.CLICK, click_cl01_al01); 
 
function click_cl01_al01(evt:MouseEvent):void 
   { 
       
      loadInfoContent(); 
      var miRequest:URLRequest = new URLRequest("cl01_calderon_vega_edwin_jesus.swf"); 
      cargadorInfo.load(miRequest); 
      cargadorInfo.contentLoaderInfo.addEventListener(Event.COMPLETE, startListener); 
      function startListener (e:Event):void 
      { 
         displayInfo.addChild(cargadorInfo); 
      } 
   } 
//***************************************************************************** 
 
cl01_al02_btn.addEventListener(MouseEvent.CLICK, click_cl01_al02); 
 
function click_cl01_al02(evt:MouseEvent):void 
   { 
      loadInfoContent(); 
      var miRequest:URLRequest = new URLRequest("cl01_leiva_monge_melania.swf"); 
      cargadorInfo.load(miRequest); 
      cargadorInfo.contentLoaderInfo.addEventListener(Event.COMPLETE, startListener); 
      function startListener (e:Event):void 
      { 
         displayInfo.addChild(cargadorInfo); 
      } 
   } 
//**********
Esto se repite en todas las listas con todos los links, etc. Aqui puse dos links nada más para que puedan tener una idea de como está el código.

El asunto está en que no puedo dejar el cargadorInfo = null porqué me dispara problemas ya que es totalemente común y el problema mayor es que como dije, esto es un pozo sin fondo!!!.

Alguien me podría echar la mano para ver como puedo descargar de la memoria los SWF que cargo al momento de darle click a cualquiera de los links llamados "Colegio, clases..." en mi Movie principal.

Agradezco cualquier ayuda, como pueden ver en el código soy bastante nuevo en esto y la verdad es que no sé como para donde salir corriendo al ver como me DRAGA la memoria el bichito este que me inventé :lol:.

Saludos y gracias por su tiempo.