<menu>
<menuitem label='Ver tutoriales' />
<menuitem label='Ver ejemplos' />
<menuitem label='Enviar un mensaje' />
<menuitem type='separator' />
<menuitem label='Visitar web' />
</menu>
//Cargamos el XML
xmlMenu = new XML();
xmlMenu.ignoreWhite = true;
xmlMenu.onLoad = function(success) {
if (success) {
llenarMenu();
} else {
trace("No se pudo cargar el XML");
}
};
xmlMenu.load("Menu.xml");
function llenarMenu() {
//Atacheamos el componente
attachMovie("Menu", "miMenu", 1);
//Llenamos el menu
miMenu.dataProvider = xmlMenu.firstChild;
}
//Eventos, al final de la función llenarMenu()
eleButton.addEventListener("click", alClicar);
//Listener para cuando clicamos en los botones, fuera de la función llenarMenu()
alClicar = new Object();
alClicar.click = function(evento) {
miMenu.show(_root._xmouse, _root._ymouse);
};
Ahora sí, cuando clicamos en nuestro botón, se nos muestra el menú en la posición donde este el puntero del ratón. El dataProvider del componente Menu es algo especial, ya que usa una subclase llamada MenuDataProvider con la cual podemos controlar las opciones a mostrar en el menú.
Vamos a añadir otro Button (nombre de instancia freButton), y lo que haremos será que cuando cliquemos en él añadir una opción al final diferentea para cada uno, añadiendo así funcionalidad a nuestro Menu. Deja el código como sigue:
//Listener para cuando clicamos en los botones
alClicar = new Object();
alClicar.click = function(evento){
//Si clicamos en el botón Elecash
if (evento.target == eleButton){
eleActivado = true;
freActivado = false;
miMenu.removeMenuItemAt(5);
miMenu.addMenuItemAt(5, { label:"Visitar Blog", selected:false, enabled:true} );
miMenu.show(_root._xmouse, _root._ymouse);
}
//Si clicamos en el botón Freddie
else if (evento.target == freButton){
eleActivado = false;
freActivado = true;
miMenu.removeMenuItemAt(5);
miMenu.addMenuItemAt(5, { label:"Visitar Foros", selected:false, enabled:true} );
miMenu.show(_root._xmouse, _root._ymouse);
}
}
Cuando cliquemos en el botón de Freddie®, añadiremos una opción, luego, al clicar en el botón Elecash, eliminaremos la opción creada anteriormente y pondremos la nueva. Si os fijais hemos creado unas variables que hemos llamado eleActivado y freActivado, estas nos servirán para saber en cual hemos pulsado, y las utilizaremos en los listeners del menu.. Ahora, por último, sólo nos falta crear los listeners para nuestro menú y ya lo tendremos totalmente programado.
Los eventos como siempre, al final de la función llenarMenu()...
//Eventos
miMenu.addEventListener("change", alSeleccionar);
//Listener para cuando seleccionamos una opcion del menu
alSeleccionar = new Object();
alSeleccionar.change = function(evento){
//Si hemos pulsado el botón Elecash
if (eleActivado == true){
if (evento.menuItem.attributes.label == "Visitar web"){
getURL("http://www.elecash.org", "_blank");
} else if (evento.menuItem.attributes.label == "Visitar Blog"){
getURL("http://www.elecash.org/blog", "_blank");
}
}
//Si hemos pulsado el botón Freddie
else if (freActivado == true){
if (evento.menuItem.attributes.label == "Visitar web"){
getURL("http://www.cristalab.com", "_blank");
} else if (evento.menuItem.attributes.label == "Visitar Foros"){
getURL("http://www.cristalab.com/foros/", "_blank");
}
}
}
Con esto, haremos que según en que botón hayamos clicado entre en un if-else, u otro, donde ahi dentro comprobaremos en que opción del menú contextual ha clicado, enviando así al usuario a una dirección web u otra.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Publica tu comentario
El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro
Entra al foro y participa en la discusión
o puedes...
¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?
Inicia sesión
¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?
Registrate