Comunidad de diseño web y desarrollo en internet online

Problema con removeChild

Citar            
MensajeEscrito el 27 Dic 2010 06:48 pm
Hola a tod@s,

Tengo un problema que me está volviendo loco. Se trata de un error en la ventana de salida al compilar mi peli Flash:

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


Esto ocurre cuando declaro la siguiente sentencia dentro de la función pintaObraTeatro:

Código ActionScript :

if (clip_teatro_mc)
{
   contenido_mc.removeChild(clip_teatro_mc);
}


clip_teatro_mc es un Sprite dentro de otro Sprite, contenido_mc. Lo que quiero es borrar clip_teatro_mc antes de que se cree una nueva instancia de la misma clase, es decir:

Código ActionScript :

clip_teatro_mc:Clip_teatro= new Clip_teatro();
contenido_mc.addChild(clip_teatro_mc);


¿Alguna idea?
Gracias!

Por AlenLoop

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Dic 2010 07:11 pm
Se me olvidó añadir que la función responde correctamente la primea vez. Después de acceder a otras secciones y volver a ésta, es cuando devuelve el error. No sé si esto tendrá alguna relevancia.
He leído otros posts sobre este tema, pero son casos diferentes al mio.

Por AlenLoop

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Dic 2010 07:18 pm
Pues yo no evaluaría así el if:

Código ActionScript :

if(contenido_mc.numChildren() > 0){
///Borrado


Si lo quieres más prólijo:

Código ActionScript :

try{
  //Borrado
}catch(e:Error){
   trace("No tiene elementos dentro");
}finally{
   trace("Pero aun AS te quiere");
}


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

chrome
Citar            
MensajeEscrito el 27 Dic 2010 07:48 pm
Hernán, si lo hago asÍ

Código ActionScript :

if(contenido_mc.numChildren() > 0){
///Borrado


Me devuelve lo siguiente:

TypeError: Error #2007: El valor del parámetro child debe ser distinto de null.
at flash.display::DisplayObjectContainer/removeChild()
at home_fla::MainTimeline/pintaObraTeatro()



Si lo hago de la seguna manera que propones:

Código ActionScript :

try{
  //Borrado
}catch(e:Error){
   trace("No tiene elementos dentro");
}finally{
   trace("Pero aun AS te quiere");
}


¡¡Funciona perfectamente!!
Muchas gracias por la solución. ¿Podrías explicarme por qué de esta manera funciona y no de las otras dos? Gracias de nuevo!

Por AlenLoop

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Dic 2010 02:12 pm
Porque borrabas antes de que tuvieras algo. El try es más prolijo por eso :D

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

chrome
Citar            
MensajeEscrito el 28 Dic 2010 04:29 pm
Ahora lo entiendo. Gracias.

Por AlenLoop

35 de clabLevel



 

firefox

 

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