Comunidad de diseño web y desarrollo en internet online

Menú dinámico (XML), con submenús y efecto de easing

Citar            
MensajeEscrito el 09 May 2006 08:49 pm
Buen día.

He estado tratando de desarrollar un menú dinámico que se carga con un archivo xml, este genera menus y submenus, dependiendo de los nodos en el archivo xml, más exactamente, los atachea desde la librería.

Me estaba basando en un componente que encontré por ahí, pero no he podido hacerlo que me funcione como debe.
Deseo que cada vez que se haga click, el menu se contraiga y muestre el submenú correspondiente, y si este se clickea, muestre los items.

Para los que quieran, pueden descargarse los .fla desde aquí: http://www.colpixel.com/avargas/downloads/MiEjemplo.zip (Mi Desarrollo, en vía de desarrollo guiño y el otro ejemplo http://www.colpixel.com/avargas/downloads/ElComponente.zip.

Por cierto, están en versión 8 y utilicé XPath.

Gracias de antemano.

************
Actualizado: Hice unos cambios en el código, pero ya los subí, estan el zip MiEjemplo, y aquí está el nuevo código, por si lo desean reemplazar en el fla:

Código :

//Garantiza que se vean los caracteres latinos
System.useCodepage = true;
//NECESARIO: Librería que extiende el objeto XML de Flash
import com.xfactorstudio.xml.xpath.*;
//-------- Empieza el menu
//-------------------------
//Variable añadida
var espaciado:Number = -26;
//-------------------------
var menu:XML = new XML();
menu.ignoreWhite = true;
menu.load("menu.xml");
menu.onLoad = function(ok) {
   if (ok) {
      //Total Nodos del XML
      var totalNodos:Array = XPath.selectNodes(menu, "/menuitems/*");
      for (i=0; i<totalNodos.length; i++) {
         //Verifica si es un Menú
         if (totalNodos[i].nodeName == "menu") {
            //En la librería está el MC que quiero que attachee
            attachMovie("menu", "menu"+i, i);
            thisItem = eval("menu"+i);
            //thisItem._y += 30;
            //Le asigna el valor al campo de texto dinámico
            thisItem.texto.text = totalNodos[i].attributes.name;
            //Todavía no sé que voy a ponerlo a hacer, si cargar movies externas o links a la web
            thisItem.onRelease = function() {
               trace(thisItem.texto.text);
            };
            //-------------------------
            //Para generar el espaciado entre Items (Actualizado)
            trace(espaciado+" soy el primero");
            thisItem._y = espaciado+26;
            espaciado = thisItem._y;
            trace(espaciado+" soy el segundo");
            //-------------------------
            //Verifico si tiene submenus y si si, los guardo en el array subMenu
            var subMenu:Array = totalNodos[i].childNodes;
            if (subMenu.length>0) {
               for (j=0; j<subMenu.length; j++) {
                  if (subMenu[j].nodeName == "submenu") {
                     //Atacheo la MC que corresponde a los submenus
                     attachMovie("submenu", "submenu"+j, j+100);
                     thisOtroItem = eval("submenu"+j);
                     thisOtroItem.texto.text = subMenu[j].attributes.name;
                     thisOtroItem.onRelease = function() {
                        trace(thisOtroItem.texto.text);
                     };
                     //-------------------------
                     //Para generar el espaciado entre Items (Actualizado)
                     trace(espaciado+" soy el tercero");
                     thisOtroItem._y = espaciado+26;
                     trace(espaciado+" soy el cuarto");
                     espaciado = thisOtroItem._y;
                     //-------------------------
                     //Este array guarda los items que pertenecen a este submenu
                     var subMenuItems:Array = subMenu[j].childNodes;
                     for (k=0; k<subMenuItems.length; k++) {
                        //De nuevo como en las anteriores
                        attachMovie("item", "item"+k, k+200);
                        thisOtroOtroItem = eval("item"+k);
                        thisOtroOtroItem.texto.text = subMenuItems[k].firstChild.nodeValue;
                        thisOtroOtroItem.onRelease = function() {
                           trace(thisOtroOtroItem.texto.text);
                        };
                        //-------------------------
                        //Para generar el espaciado entre Items (Actualizado)
                        trace(espaciado+" soy el quinto");
                        thisOtroOtroItem._y = espaciado+26;
                        trace(espaciado+" soy el sexto");
                        espaciado = thisOtroOtroItem._y;
                        //-------------------------
                        //trace(totalNodos[i].attributes.name+" >> "+subMenu[j].attributes.name+" >> "+subMenuItems[k].firstChild.nodeValue);
                     }
                  } else {
                     //trace(subMenu[j].firstChild.nodeValue);
                  }
               }
               //thisItem._y += 26;
            } else {
               //trace(totalNodos[i].attributes.name);
            }
         }
      }
   }
};

Por ChickenWings

0 de clabLevel



Genero:Masculino  

Medellín

firefox
Citar            
MensajeEscrito el 19 Feb 2009 03:12 am

Por arcanomatrix

0 de clabLevel



 

firefox

 

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