Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/03/2012, 14:12
lalola3lolalo
 
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta submenu 3niveles flash

Hola, tengo que hacer un menú dinámico, cargando un xml.
El menú es desplegable, y las opciones del menú, pueden tener, 1 nivel, 2 o hasta 3. Pero el nivel 3 no logro que me lo despliegue.

Tengo este código:

Xml
Código HTML:
<menu name="opcion 1" url="">
   <submenu_item name="subopcion 1.1" url="">
         <submenu_item2 name="subopcion 1.1.1" url="galeria/opcion1/subopcion111/subopcion111.xml"></submenu_item2>
         <submenu_item2 name="subopcion 1.1.2" url="galeria/opcion1/subopcion112/subopcion112.xml"></submenu_item2>
   </submenu>
   <submenu_item name="subopcion 1.2" url="galeria/opcion1/subopcion12/subopcion12.xml"></submenu>
   <submenu_item name="subopcion 1.3" url="">
         <submenu_item2 name="subopcion 1.3.1" url="galeria/opcion1/subopcion131/subopcion131.xml"></submenu_item2>
          <submenu_item2 name="subopcion 1.3.2" url="galeria/opcion1/subopcion132/subopcion132.xml"></submenu_item2>
   </submenu>
</menu>
<menu name="opcion 2" url="">
   <submenu_item name="subopcion 2.1" url="galeria/opcion1/subopcion21/subopcion21.xml"></submenu>
</menu> 
Flash
Código HTML:
myXML.ignoreWhite = true;
myXML.onLoad = function(success) {if (success) {readXmlData();}};
this.createEmptyMovieClip("allMenus",1);
myXML.load(xml=_root.xmlFile ? _root.xmlFile : "menu.xml");

function readXmlData() {
	l = myXML.childNodes.length;
	menu = new Array(l);
	for (i=0; i<l; i++) {
		menu[i] = myXML.childNodes[i].attributes.name;
		addNewMenu();
	}
}

function addNewMenu() { // Añadir items menu 1r nivel
	allMenus.attachMovie("menuItem","menu"+i,i,{_y:i*40, id:i});
	allMenus["menu"+i].menu_txt.text = menu[i];
	allMenus["menu"+i].bg_mc.onRelease = menuRelease;
}

function menuRelease() {
	prevmenu.enabled = true;
	mid = this._parent.id;
	sl = myXML.childNodes[mid].childNodes.length;
	if (this.released != true && sl>0) {
		for (i=0; i<sl; i++) {
			this._parent.subs.attachMovie("subMenuItem","sub"+i,i,{_y:0, id:i, pid:mid});
			Tweener.addTween(this._parent.subs["sub"+i],{time:.3, transition:"easeOutCirc", _y:(i+1)*subspace});
			this._parent.subs["sub"+i].menu_txt.text = myXML.childNodes[mid].childNodes[i].attributes.name;
			this._parent.subs["sub"+i].bg_mc._width = this._parent.subs["sub"+i].menu_txt._width;
			this._parent.subs["sub"+i].bg_mc.onRelease = subrelease;
		}
		this.released = true;
	} else if (this.released == true) {
		for (j=0; j<sl; j++) {
			Tweener.addTween(this._parent.subs["sub"+j],{time:.3, transition:"easeOutCirc", _y:0, _alpha:0});
			this._parent.subs["sub"+j].enabled = false;
		}
		this.released = false;
	}

	previd = mid;
	prevmenu = this;

        prevsub = prevmenu.subs["sub"+0].bg_mc;
	prevsub.released = false;
}

function subrelease() {

	prevsub.enabled = true;
	prevsub = this;
	sid = this._parent.id; 
	msid = this._parent.pid;
	
	// miramos si submenu tiene otro submenu
	sl2 = myXML.childNodes[msid].childNodes[sid].childNodes.length;
	if (sl2>0){
		for (i=0; i<sl2; i++) {

			this._parent.subs2.attachMovie("subMenuItem2","sub2"+i,i,{_y:0, id:i, pid:sid});
			Tweener.addTween(this._parent.subs2["sub2"+i],{time:.3, transition:"easeOutCirc", _y:(i+1)*subspace});
			this._parent.subs2["sub2"+i].menu_txt.text = myXML.childNodes[msid].childNodes[sid].childNodes[i].attributes.name;
			this._parent.subs2["sub2"+i].bg_mc._width = this._parent.subs2["sub2"+i].menu_txt._width;
			this._parent.subs2["sub2"+i].onRelease = subrelease2; //llamamos función subrelease2

		}
		this.released = true;
	}else if(this.released == true){
		for (j=0; j<sl; j++) {
			Tweener.addTween(this._parent.subs2["sub2"+j],{time:.3, transition:"easeOutCirc", _y:0, _alpha:0});
		}
		this.released = false;
	}
}
¿Alguien puede orientarme? Estoy haciendolo igual que el segundo nivel pero no me funciona par el tercero...

Estoy haciendo pruebas y veo que el fallo esta en el attachMovie, pues el xml lo lee bien,
si creo un clip en _root (clipPrueb) con un campo de texto dinámico(textos) y dentro del bucle le pongo :
Código HTML:
Ver original
  1. if (sl2>0){
  2.         for (i=0; i<sl2; i++) {
  3.  
  4. _root.clipPrueba_mc.textos.text = _root.clipPrueba_mc.textos.text = + myXML.childNodes[msid].childNodes[sid].childNodes[i].attributes.name;

El contenido de los subitems2 salen correctos...

¿Que estoy haciendo mal en el atachmovie? Le estoy dando mil vueltas y no encuentro el fallo...

Última edición por lalola3lolalo; 13/03/2012 a las 11:02 Razón: el fallo esta en el attachmovie no en el xml