Comunidad de diseño web y desarrollo en internet online

Ayuda con removeChild

Citar            
MensajeEscrito el 06 Ago 2008 11:59 am
Hola, soy un medio noob en actionscript 3, y tengo un pequeño problema... tengo un codigo tal que este:

Código :

private function pintarRelacionado(item:Loader,posicion:Number){
         relsActivos[posicion]=item;
         with (item){
            name=posicion.toString();
            y=hei-hei/5-40;
            x=13+((posicion-1)*wid/4);
            width=wid/5;
            height=hei/5;
            
            addEventListener(MouseEvent.MOUSE_MOVE,colorearRelacionado);
            addEventListener(MouseEvent.CLICK,iniciarRelacionado);
            addEventListener(MouseEvent.MOUSE_OUT,decolorearRelacionado);
         }
         mascara.addChild(item);
         mascara.setChildIndex(item,mascara.numChildren-1);
         pintarMascara(item,mascara,8,0xFFFFFF);
      }
private function colorearRelacionado(evt:MouseEvent=undefined){
         bordeActivo=pintarMascara(evt.target,mascara,6,0x7F572D);
      }
private function decolorearRelacionado(evt:MouseEvent=undefined){
         mascara.removeChild(bordeActivo);
      }
private function pintarMascara(aMaskear,contenedor,borde,color){
         var newMask:Sprite=new Sprite();
         with (newMask){
            x=aMaskear.x-borde/2;
            y=aMaskear.y-borde/2;
            graphics.beginFill(color,1);
            graphics.drawRect(0,0,aMaskear.width+borde,aMaskear.height+borde);
            graphics.endFill();
         }
         contenedor.addChild(newMask);
         contenedor.setChildIndex(aMaskear,contenedor.numChildren-1);
         return newMask;
      }


El problema es que la funcion decolorearRelacionado no me borra el Sprite que crea colorearRelacionado... ¿alguna idea o algun dato mas que alguien necesite para saber que me pasa?

Por OnekO

1 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Ago 2008 12:28 pm
Cuando añadas la mascara ponle nombre:

Código :

contenedor.addChild(newMask).name = "bordeactivo";


Despues para eliminarla:

Código :

mascara.removeChild(mascara.getChildByName("bordeactivo"));


No hace falta que la función pintarMascara te devuelva el sprite e igualar este a una variable

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 06 Ago 2008 12:39 pm
Nada, no hay manera... La cosa es que hago un trace de mascara.getChildByName("bordeactivo") y me dice que es una instancia de Sprite (correcto), pero luego, al hacer el removeChild, no me funciona. Tambien es curioso que no me da error ni nada...

Por OnekO

1 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Ago 2008 01:57 pm
Mira, mascara parece ser una variable global en tu clase, entonces por qué la envias como parámetro en la función pintarMascara, si le pones nombre el removeChild te debe funcionar, haz esta prueba en tu timeline para que veas:

Código :

var contenedor:Sprite = new Sprite();
var circulo:Sprite = new Sprite();

with(circulo.graphics){
   
   beginFill(0x000000, 1),
   drawCircle(500, 200, 25);
   endFill();
   
}

contenedor.addChild(circulo).name = "circulo";
addChild(contenedor).name = "contenedor";

stage.addEventListener(MouseEvent.MOUSE_DOWN, deleteCircle);

function deleteCircle(evt:MouseEvent):void{
   
   if(contenedor.getChildByName("circulo")){
      
      contenedor.removeChild(contenedor.getChildByName("circulo"));
      
   }else{
      
      trace("Ya se removió el circulo");
      
   }
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 07 Ago 2008 08:08 am
Vale, ahora ya me funciona, el problema era del evento MOUSE_MOVE... he puesto MOUSE_OVER y fuinciona bien. Gracias por la ayuda y tal :)

Por OnekO

1 de clabLevel



Genero:Masculino  

firefox

 

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