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 originalif (sl2>0){
for (i=0; i<sl2; i++) {
_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...