Comunidad de diseño web y desarrollo en internet online

no me funciona removeChild en AS3

Citar            
MensajeEscrito el 09 Oct 2009 09:49 pm
Buenas,

Antes de nada decir q no soy ningún genio en as3, simplemente un diseñador web q acaba de meterse en programación, así q ando algo pez...

Tengo varios btns q cargan las distintas secciones/categorías de la web. Al clicar sobre cualquiera de ellos el código comprueba 3 cosas:
1. Si no hay ninguna categoría abierta:
1.1. Si no hay ninguna abierta, simplemente abre la equivalente al btn presionado mediante un addChild
2. Si hay una categoría abierta, comprueba si coincide con la q pretendemos abrir
2.1. Si la categoría abierta coincide con la q pretendemos abrir, no hace nada
3. Si hay una categoría abierta, comprueba si no coincide con la q pretendemos abrir
3.1. Si la categoría abierta no coincide con la q pretendemos abrir, elimina el mc contenedor de la categoría abierta mediante un removeChild y abre la equivalente al btn presionado mediante un addChild

Código ActionScript :

esSidecar.addEventListener(MouseEvent.CLICK, categoryClick);
esMedia.addEventListener(MouseEvent.CLICK, categoryClick);

function categoryClick(mEv:MouseEvent):void{
   var mEvName:String = mEv.target.name;
   MovieClip(parent.parent).newCat = mEvName;
   
   var loadCatSwf:URLRequest = new URLRequest(mEvName + ".swf");
   var Cat_mc = new Loader();
      
   if(MovieClip(parent.parent).currentCat == "none"){
      //open newcat
      MovieClip(parent.parent).catAnim_mc.play();
      MovieClip(parent.parent).currentCat = MovieClip(parent.parent).newCat;
      
      Cat_mc.load(loadCatSwf);
      MovieClip(parent.parent).catAnim_mc.catCont_mc.catContent_mc.addChild(Cat_mc);
   }else if(MovieClip(parent.parent).currentCat == MovieClip(parent.parent).newCat){
      //do nothing
   }else{
      //Close currentcat and then open newcat
      MovieClip(parent.parent).catAnim_mc.catCont_mc.catContent_mc.currentCat_mc.removeChild(this);
      MovieClip(parent.parent).currentCat = MovieClip(parent.parent).newCat;
      
      Cat_mc.load(loadCatSwf);
      MovieClip(parent.parent).catAnim_mc.catCont_mc.catContent_mc.addChild(Cat_mc);
   }
}


Cuando publico, me da el siguiente error y no deja q el código siga ejecutándose:
TypeError: Error #1010: Un término no está definido y no tiene propiedades.
at final_fla::mcEsMenu_11/categoryClick()

Si elimino el código del removeChildm para comprobar si el resto de código se ejecuta, las categorías cargadas mediante los addChild se solapan las unas a las otras sin desaparecer ninguna de ellas, osea, si clico en el btn esSidecar, su categoría se carga y si luego clico en el btn esMedia, su categoría se carga sobre la anterior, si vuelvo a clicar sobre esSidecar, su categoría se vuelve a cargar sobre la anterior y así sucesivamente.

El mc añadido mediante el addChild del punto 1.1 y el mc añadido mediante el addChild del punto 3.1 coinciden en nombre, lo digo porq no se si es esto lo q crea conflicto al intentar eliminar mediante removeChild.

Total, q no se porq el removeChild no me funciona. Si se os ocurre algo, bienvenido sea.

Un saludo y gracias de antemano.

Por deskarrada

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Oct 2009 08:03 am
proba con esto, no se si funciona:
MovieClip(parent.parent).catAnim_mc.catCont_mc.catContent_mc.removeChild(currentCat_mc);

Por lucasmoyano

Claber

1960 de clabLevel

22 tutoriales

Genero:Masculino  

Developer

firefox
Citar            
MensajeEscrito el 10 Oct 2009 06:28 pm
Ya he revisado eso q comentas. Había hecho tantas pruebas q se me había pasado por alto cambiar eso por el código original, pero nada, ese no es el problema, sino q aún cambiándolo sigue sin funcionar.

De todas formas, gracias por el apunte, os vuelvo a postear el código corregido:

Código ActionScript :

esSidecar.addEventListener(MouseEvent.CLICK, categoryClick);
esMedia.addEventListener(MouseEvent.CLICK, categoryClick);

function categoryClick(mEv:MouseEvent):void{
   var mEvName:String = mEv.target.name;
   MovieClip(parent.parent).newCat = mEvName;
   
   var loadCatSwf:URLRequest = new URLRequest(mEvName + ".swf");
   var Cat_mc = new Loader();
      
   if(MovieClip(parent.parent).currentCat == "none"){
      //open newcat
      MovieClip(parent.parent).catAnim_mc.play();
      MovieClip(parent.parent).currentCat = MovieClip(parent.parent).newCat;
      
      Cat_mc.load(loadCatSwf);
      MovieClip(parent.parent).catAnim_mc.catCont_mc.catContent_mc.addChild(Cat_mc);
   }else if(MovieClip(parent.parent).currentCat == MovieClip(parent.parent).newCat){
      //do nothing
   }else{
      //Close currentcat and then open newcat
      MovieClip(parent.parent).catAnim_mc.catCont_mc.catContent_mc.Cat_mc.removeChild(this);
      MovieClip(parent.parent).currentCat = MovieClip(parent.parent).newCat;
      
      Cat_mc.load(loadCatSwf);
      MovieClip(parent.parent).catAnim_mc.catCont_mc.catContent_mc.addChild(Cat_mc);
   }
}

Por deskarrada

18 de clabLevel



 

firefox

 

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