Comunidad de diseño web y desarrollo en internet online

removeChilds no borra los Childs!!!!!

Citar            
MensajeEscrito el 27 Abr 2008 05:06 am
Tengo un problema que lamentablemente no se si es un bug del flash o directamente
no se puede hacer.. la cosa es que no puedo borrar un clip de la memoria del player. :twisted:
ejemplo..

Código :

var clip:Sprite = new Sprite();
addChildAt(clip,0);
clip.name="miclip";
trace(clip.name); //salida: miclip

//lo borro
removeChild(clip);
//pruebo el otro remove
removeChildAt(0);

trace(clip.name); //salida: miclip

si veran por mas que se remueva el clip se puede seguir teniendo acceso lo que quiere decir que sigue en memoria y lamentablemente me pasa que si tiene un proseso interno el mismo clip sigue andando.. :twisted:

ahora un ejemplo mas evidente!!!! :twisted: :twisted: :twisted:

tengo una clase que lo que hace es tener un simple evento de conteo es para provar
que psa con este proseso cuando borro el clip... veamos..
la clase clips.

Código :

package {
   import flash.display.Sprite;
   import flash.events.TimerEvent;
   import flash.utils.Timer;
   public class clips extends Sprite{
      private var intervalo:Timer
      private var count:int=0;
      private function conteo(event):void {
         trace(count++);
      }
      public function comenzarConteo(event):void {
         intervalo= new Timer(1000, 0);
         intervalo.addEventListener(TimerEvent.TIMER, conteo);
         intervalo.start();
      }
   }
}


ahora veamos..

Código :

import clips;
var clip:clips = new clips();

addChildAt(clip,0)
clip.name="miclip";
trace(clip);//salida: [object clips]
trace(clip.name);//salida: miclip
clip.addEventListener(Event.ACTIVATE,clip.comenzarConteo); //salida 0,1,2,3,4,5,6,7 etc...


//lo borro
removeChild(clip);

trace(clip.name);//salida: miclip
//sigue saliendo 0,1,2,3,4,5,6,etc....

como veran sigue andando el conteo por mas que borre el clip!!! :twisted:
el problema que esto acarrea es que lamentablemente sigue estabdo ahi por mas que no lo usemos. no hay forma de borrar el clip y que no exista mas!!!??? :?

gracias..

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

msie7
Citar            
MensajeEscrito el 27 Abr 2008 03:53 pm
EN AS3 cualquier evento interno sigue funcionando independientemente si está o no en el DisplayList. Así cualquier clip con callbacks tiene que ser "limpiado" (removidos todos los listeners, timers, etc), antes de ser removido del DisplayList. Una vez removido, en la medida que no existan mas referencias a él es marcado para ser quitado de memoria en el próximo ciclo del Grabage Colector que no es manejable por código. Así, cuando queremos remover algo de memoria, debemos limpiarlo de eventos internos, quitar todas las referencias que existan a él y finalmente removerlo del DisplayList, esto lo hace elegible para ser removido de memoria, lo que no quiere decir que sea removida inmediatamente

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Abr 2008 08:39 pm
Mmm interesante... había leído la duda de phoxer y tampoco sabía resolverla, muchas gracias solisarg :-)

Por Juanlu_001

Claber

690 de clabLevel

6 tutoriales

 

firefox
Citar            
MensajeEscrito el 27 Abr 2008 10:25 pm
gracias, pues si es verdad. habra que limpiar todos los eventos y "cosas" antes de de borrar un objeto. que lastima que no se pueda manejar el Grabage Colector. me pasaba que tenia una intro en linea de tiempo y al final llamaba a una funcion la cosa pasaba que cuando yo removia el intro porque se apretaba el un boton de skeep intro. la animacion segui aintermanete ahunque yo removia el clip de la animacion. cosa que en as2 no pasaba jajaja. bueno habara que poner mas codigo para controlar esas cosas. gracias de todas maneras..

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

msie7
Citar            
MensajeEscrito el 28 Abr 2008 03:12 am
En si lo q tienes q hacer es eliminar los listener que has agregado, que persisten por más que hayas eliminado un clip donde agregaste un listener, para ponerlo en code sería:

Código :

var clip:Sprite = new Sprite();
clip.graphics.beginFill(0xfff,1);
clip.graphics.drawRect(0,0,50,50);
clip.graphics.endFill();
this.addChild(clip);
this.removeChild(clip);
clip.addEventListener(Event.ENTER_FRAME, enterframe);
//
function enterframe(event:Event):void {
   trace(true);
   clip.removeEventListener(Event.ENTER_FRAME, enterframe);
}

Por eldervaz

BOFH

10964 de clabLevel

39 tutoriales
56 articulos

Genero:Masculino  

en algún lugar del mundo

firefox
Citar            
MensajeEscrito el 10 Jun 2008 02:36 pm
:cry: esto sigue siendo un problema!!!! ahora por ejemplo un cliente me mando unas animaciones controladas con AS2 entonces no puedo pasarlas a AS3 claro que la pagina que tengo esta en AS3 si bien las animaciones andan. cuando borro el loader contenedor. no se borran los eventos.. :twisted:

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 10 Jun 2008 02:46 pm
:lol: :lol: :lol: bueno ammm :oops: ya lo solucione :oops: con

Código :

loader.unload();

se borraron todos los eventos solitos ^^

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.