Como crear un menú dinámico con Actionscript 3.0 y XML

Como crear un menú dinámico con Actionscript 3.0 y XML

Etiquetas: URLLoader URLRequest currentTarget

Imagen en reemplazo de flash

Este ejemplo intenta mostrar una forma básica de hacer un menú dinámico con Flash y XML. La misma teoria que se aplica aquí para crear los elementos del menú, se puede aplicar en la creación, por ejemplo, de una galeria de imágenes o videos.

La idea es hacer un menú cuyos elementos se crean a partir de los nodos de un XML. De esta forma se hace más sencillo el mantenimiento del menú, ya que por ejemplo para añadir un botón solo habría que añadir un nuevo nodo con los contenidos necesarios. El XML que vamos a utilizar es este:

  1.  
  2. <?xml version="1.0" encoding="utf-8" ?>
  3. <data>
  4. 	<elementos>
  5. 		<elemento>
  6. 			<titulo>Google</titulo>
  7. 			<enlace>http://www.google.com</enlace>
  8. 		</elemento>
  9. 		<elemento>
  10. 			<titulo>Yahoo</titulo>
  11. 			<enlace>http://www.yahoo.com</enlace>
  12. 		</elemento>
  13. 		<elemento>
  14. 			<titulo>Altavista</titulo>
  15. 			<enlace>http://www.altavista.com</enlace>
  16. 		</elemento>
  17. 		<elemento>
  18. 			<titulo>Lycos</titulo>
  19. 			<enlace>http://www.lycos.com</enlace>
  20. 		</elemento>
  21. 	</elementos>
  22. </data>
  23.  

Vemos que cada elemento tiene un título, que vamos a poner en el texto del botón, y un enlace, que es la url que vamos a cargar al hacer click en el botón.

Una vez que tenemos el XML, vamos a flash y creamos el botón que vamos a utilizar para crear el menú. En este caso es un fondo blanco con un campo de texto dinámico llamado "Texto_txt". Una vez creado pulsamos con el botón derecho en el símbolo que tenemos en la biblioteca y seleccionamos "Vinculación". Tenemos que asociar el botón a la clase ElementoMenu, que es el nombre de clase que vamos a utilizar para crear los botones.

Vinculacion FLash Actionscript

Ahora vamos a cargar el XML. Creamos un URLLoader, añadimos los eventos, y creamos las funciones de carga y error. Se puede ver el proceso de carga más detallado en el tutorial de carga de XML en Actionscript 3.0 . Una vez cargado el XML y almacenado en la variable datos, llamamos a la función montar, donde vamos a crear el menú. Tenemos que recorrer todos los nodos, y crear un botón por cada nodo. Para recorrer los elementos con la estructura que hemos definido en el XML, tenemos que utilizar un for con este aspecto:

  1.  
  2. for (var i:uint = 0; i < datos.elementos.elemento.length(); i++) {
  3.  
  4. }
  5.  

En cada "vuelta" del for, vamos a crear un botón, rellenamos su campo Texto_txt con el nodo titulo, y almacenamos en una variable dentro del botón el valos del nodo enlace. Lo colocamos en "y" descendente según avanzamos para que salgan uno debajo de otro, y por último le añadimos un evento click que llama a la función navegar:

  1.  
  2. boton = new ElementoMenu();
  3. boton.Texto_txt.text = datos.elementos.elemento[i].titulo;
  4. boton.enlace = datos.elementos.elemento[i].enlace;
  5. boton.y = i * 25
  6. boton.buttonMode = true;
  7. boton.mouseChildren = false;
  8. boton.addEventListener(MouseEvent.CLICK, navegar);
  9. addChild(boton);
  10.  

Ahora, cada vez que hagamos click en un botón, se ejecutará la función navegar. En esta función recogemos el valor de la variable que hemos almacenado en enlace dentro del botón, por medio de currentTarget:

  1.  
  2. private function navegar(e:MouseEvent):void {
  3. 	navigateToURL(new URLRequest(e.currentTarget.enlace), "_blank");
  4. }

Espero haberlo explicado de una manera fácil. Para cualquier duda podéis utilizar los comentarios.

Descargar archivos

Comentarios
    • Autor
    • Manuel López
    Muy práctico y operativo este ejercicio. Quisiera conocer las mieles del mismo
    • Autor
    • Raul
    holassssssssss
    • Autor
    • Ronald
    Hola, tengo una pregunta pues no encuentro tu tuto para cargar el XML en "datos" que supongo es un Array, recien estoy tocando el AS3 espero me puedas ayudar con el codigo porq estoy q busco por todos lados como cargar mi XML en un array, gracias de antemano =)
    • Autor
    • ronald
    nuevamente yo, mejor le doy algunos detalles mas a mi pregunta, no es exactamente q kiera lo del array sino q yo sabia cargar cosas del xml desde un array, pero mi verdadero es q nose hacer esto de cargar el xml en "datos", otra pregunta quizas es como cargar estos botones digamos en un Movieclip el cual se muestra como resultado de presionar un boton en la escena... espero me entiendas.
    • Autor
    • vektor
    el xml debe ser introducido en flash 9 . . . .?? como puedo conseguir el away 3d ?? . . .gracias
    • Autor
    • andrea gonzalez
    buenisimo
    • Autor
    • FuDdY
    Hola. Muy buen tutorial. Apenas empiezo en esto de las aplicaciones en flash y he tenido un problema. Finalmente logre hacer que se carguen las imagenes, ahora lo que quisiera hacer es poder incustrar la pelicula flash (*.swf) en una pagina web. Usando el metodo de publicacion que viene en Flash CS3, me genera el codigo HTML, pero al tratar de ejecutar la aplicacion, no carga nada ni marca algun error. Hay alguna forma de saber que es lo que pasa ???
    • Autor
    • alfonso gonzalez
    Hola estoy intentando montar una galeria que esta ya prediseñada en esta pagina, pero no puedo ya que tiene que quedar en el fotograma de la Galeria que en este caso esta anidado en el de las paginas. esta pag. usa xml, pero no se como ponerla dentro
    • Autor
    • Gabriel
    Hola! modificando los permisos de seguridad de flash funciona perfectamente en modo local...Felicidades y gracias por este utilìsimo material!. Gabriel.
    • Autor
    • orlandosdj
    Hola! muy bien y muy practico
    • Autor
    • jaime
    de donde sale la clase o mejor los nombres de las clases, ejemplo ElementoMenu ó flash.display.MovieClip. Es que de verdad no entiendo nada, ofresco disculpas jeje!
    • Autor
    • Oliver
    Hola! ¿Cómo se podría añadir un submenu a este menu? Podrias ponerme un ejemplo.Gracias, la verdad que tus tutoriales son de gran calidad. :)
    • Autor
    • ivan
    soy nuevo en esto del flash, hice un menu desplegable en flash, pero como puedo hacer para que al desplegarse y darle click me envie a otra escena de la misma pelicula de flash, xq le pongo un url de pag web y si me envia a la pagina pero si le pongo que me envie a otra escena no se puede, te agradeceria mucho tu ayuda gracias
Dejar un comentario
Tu nombre (obligatorio):

E-mail (obligatorio, no se mostrará):

Web:

Comentario: