Comunidad de diseño web y desarrollo en internet online

Problemas con removeMovieClip

Citar            
MensajeEscrito el 25 Mar 2007 06:13 pm
Ante todo, felicitaros por la página y toda la información que ofrece y que tanto ayuda a gente que como yo estamos descubriendo el maravilloso mundo de Flash & ActionScript.

Os planteo un problema que tengo al intentar borrar un MovieClip creado con el método attachMovie. En el frame principal tengo un ComboBox llamado "tabla". Cuando este objeto adquiere el valor (data) "articulos", deseo crear un nuevo MovieClip ("mcArticulos" que está en mi biblioteca) que a su vez contiene otro ComboBox llamado "familia". Si "tabla" (data) tiene un valor distinto a "articulos", se deberá borrar el MovieClip "articulos" si existe. El código aclara esta palabrería:

Código :

//en el frame principal
actualizarArticulos();
function actualizarArticulos(){
   if (tabla.selectedItem.data=="articulos"){
      if (articulos==undefined){ //No existe, por tanto lo creamos (this == _root)
         this.attachMovie("mcArticulos","articulos",0,{_x:160,_y:68});
         articulos.setDepthTo(this.getNextHighestDepth());
         //intercambio foco entre el ComboBox tabla y el MovieClip articulos
         tabla.swapDepths(articulos);
      }
   } else{ //para cualquier otro valor, borrarmos si existe el MovieClip articulos
                //borrar contenido del ComboBox. Pienso que no debería hacer falta si
                //funcionara removeMovieClip
      articulos.familia.removeAll();
      //borrar MovieClip
                removeMovieClip(articulos); //no me funciona
   }//if
}//function


El ComboBox "tabla" del frame principal tiene el siguiente código

Código :

on (change){
   _root.actualizarArticulos();
}


Finalmente, en el frame principal de "mcArticulos", creo un par de variables LoadVars() y hago una consulta a través de PHP a una BD MySQL con la que actualizo los valores (label) del ComboBox "familia". Esta consulta funciona perfectamente y los valores se presentan a las mil maravillas. No creo ningún tipo de objeto dentro de éste código.

¿Alguién podría ayudarme a ver la luz de por qué el MovieClip "articulos" no se borra? ¿Por qué al incluir valores en el ComboBox el MovieClip contenedor no se borra?

Agradezco vuestra ayuda. Sldos. Almus Follen

Por almusfollen

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Mar 2007 04:34 am
prueba de esta forma que haci me ha funcionado
articulos.removeMovieClip();

Por eduar

63 de clabLevel



 

msie7
Citar            
MensajeEscrito el 26 Mar 2007 04:36 am
prueba de esta forma que haci me ha funcionado
articulos.removeMovieClip();

Por eduar

63 de clabLevel



 

msie7
Citar            
MensajeEscrito el 26 Mar 2007 06:22 am
Gracias eduar por tu respuesta.
Acabo de probar tu propuesta pero tampoco funciona. Me he asegurado de que no tengo ninguna otra instancia en la película con el mismo nombre. Realmente no se lo que está pasando.

Por almusfollen

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Mar 2007 04:28 pm
bueno no se entonces tu has probado si cuando llamas a la funcion entra hay
darle un trace porque eso me pincha asi.
Saludos.

Por eduar

63 de clabLevel



 

msie7
Citar            
MensajeEscrito el 26 Mar 2007 05:06 pm
Te agradezco eduar tu interés.
Efectivamente sí realicé esa prueba. En concreto estoy manejando el siguiente código:

Código :

//en el frame principal
actualizarArticulos();
function actualizarArticulos(){
   if (tabla.selectedItem.data=="articulos"){
      if (articulos==undefined){ //No existe, por tanto lo creamos (this == _root)
    trace("Creando: "+articulos); //output => Creando: undefined
         this.attachMovie("mcArticulos","articulos",0,{_x:160,_y:68});
         articulos.setDepthTo(this.getNextHighestDepth());
         //intercambio foco entre el ComboBox tabla y el MovieClip articulos
         tabla.swapDepths(articulos);
         trace("Creado: "+articulos); //output => Creado: _level0.articulos
      }
   } else{ //para cualquier otro valor
      if (articulos!=undefined){ //si existe el MovieClip articulos, lo borramos
    trace("Borrando: "+articulos); //output => Borrando: _level0.articulos
         //borrar contenido del ComboBox. Pienso que no debería hacer falta si funcionara removeMovieClip
    articulos.familia.removeAll(); //sí funciona
    //borrar MovieClip
    removeMovieClip(articulos); //no funciona
    //articulos.removeMovieClip; //tampoco funciona
    trace("Ya borrado: "+articulos); //output => Ya borrado: _level0.articulos //sigue existiendo
      }
   }//if
}//function


Los outputs de los trace me parecen correctos a excepción del "Ya borrado" que debería reportar undefined.
Ya no se por donde cogerlo!!!!

Por almusfollen

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Mar 2007 07:40 pm
Hola de nuevo a todos!!

Ya encontré la solución aunque aún no entiendo muy bien lo que ha ocurrido. El código siguiente me funciona:

Código :

actualizarArticulos();
function actualizarArticulos(){
   if (tabla.selectedItem.data=="articulos"){
      if (articulos==undefined){
         attachMovie("mcArticulos","articulos",0,{_x:160,_y:68});
/*si en lugar de 0 en el parámetro depth pongo getNextHighestDepth, no funciona. Con el método getInstanceDepth(0) me he asegurado que ningún objeto se encuentra en ese foco. Además ya no tengo que colocar la instrucción de intercambio de foco.*/
      }
   } else{
      if (articulos!=undefined){
         removeMovieClip(articulos);
      }
   }
}//function


Bueno, muchas gracias por atenderme y por vuestro tiempo. Espero que esto también pueda servir a otros. Seguiré consultando y aprendiendo de vosotros.

Sldos. Almus Follen

Por almusfollen

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Mar 2007 09:19 pm
ok que bueno

Por eduar

63 de clabLevel



 

msie7

 

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