Comunidad de diseño web y desarrollo en internet online

¿Como eliminar variables dinámicas en AS3?

Citar            
MensajeEscrito el 01 Ago 2011 06:05 pm
Buenas tardes,

Con ayuda de ustedes pude crear dinámicamente objetos con el siguiente código:

Código :

function pintardest (evt:Event)
{
   for(var i:uint=0; i<evt.target.data.cant; i++){
      var dest:Idc = new Idc();
      dest.name = "dest"+i;
      Mapa.addChild(dest);
   }
}


pero ahora necesito borrar dichos objetos dinámicamente, estoy utilizando lo siguiente pero no me funciona, por favor ayudenme muchas gracias.

Código :

function eliminar (e:MouseEvent)
{
   for(var i:uint=0; i<evt.target.data.cant; i++){
      var dest:Idc = new Idc();
      dest.name = "dest"+i;
      Mapa.removeChild(dest);
   }
}


Me genera el siguiente error

Código ActionScript :

ArgumentError: Error #2025: El objeto DisplayObject proporcionado debe ser un elemento secundario del llamador.
   at flash.display::DisplayObjectContainer/removeChild()
   at alianza_fla::MainTimeline/eliminar()



Por favor ayudenme muchas gracias, agradezco de corazón su ayuda.

Por robix100

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 01 Ago 2011 06:45 pm
para empezar, si lees tu codigo, "var dest:Idc = new Idc();", por que crees que no te da error al crearlo con la funcion "pintardest()" y si al llamar "eliminar()"???

simple, porque al crear, esa parte "var dest:Idc = new Idc();", siempre haces una NUEVA variable "dest" y la agregas a Mapa con el addChild, ahi todo bien, pero al querer eliminar, estas haciendo lo mismo... entonces flash no puede remover de Mapa algo que no has agregado...


Código ActionScript :

function eliminar (e:MouseEvent)

{

   for(var i:uint=0; i<evt.target.data.cant; i++){

      var dest:Idc = new Idc(); //<--- parte del PROBLEMA

      dest.name = "dest"+i;

      Mapa.removeChild(dest);

   }

}


una posible solucion podria ser Mapa.removeChild(dest.name); pero "dest" deberia ser una varible global..aunq aqui solo quitaria del Child unicamente al ultimo "dest" creado con la funcion "pintardest()"...

saludos

Por ilvxor

11 de clabLevel



 

c++ as3

firefox
Citar            
MensajeEscrito el 01 Ago 2011 06:52 pm
un detalle que ignore, en el:

Mapa.removeChild(dest.name); // esta mal

deberia ser:

Mapa.removeChild(dest); //como lo tenias

la diferencia esq "dest" debe ser global como te dije y debes quitar lo demas que esta en elimniar

Por ilvxor

11 de clabLevel



 

c++ as3

firefox
Citar            
MensajeEscrito el 01 Ago 2011 08:50 pm
Yo lo haria asi:
(asumiendo que tu bucle da las vueltas necesarias)

Código ActionScript :

function eliminar (e:MouseEvent)
{
   for(var i:uint=0; i<evt.target.data.cant; i++){
      Mapa.removeChild(Mapa.getChildByName("dest"+i));
   }
}


Me avisas que tal.
Saludos.

Por Camuss

498 de clabLevel

1 tutorial
1 articulo

Genero:Masculino  

Lima City - Perú

firefox
Citar            
MensajeEscrito el 02 Ago 2011 02:30 am
Muchas gracias, apreciados compañeros, me sirvio demasiado sus explicaciones.

MUCHAS GRACIAS

Por robix100

3 de clabLevel



 

msie8

 

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