Modificar el menú contextual (botón derecho) con Actionscript 3.0

Etiquetas: ContextMenu ContextMenuItem

Modificar el menú contextual (botón derecho) con Actionscript 3.0

Desde Actionscript podemos modificar los elementos del menú que aparece al pulsar sobre nuestra película con el botón derecho.

Para cambiar el menú, podemos seguir estos pasos:

-Crear una variable de tipo ContextMenu:

  1. var menuDTRK:ContextMenu = new ContextMenu();

-Crear los elementos que vamos a añadir al menú. Estos elementos son de tipo ContextMenuItem, y el constructor recibe como parámetro el texto que vá a aparecer en el menú (hay otros 3 parámetros opcionales):

  1. var quienes:ContextMenuItem = new ContextMenuItem("QUIENES SOMOS");
  2. var trabajos:ContextMenuItem = new ContextMenuItem("TRABAJOS");

-Añadir los elementos que hemos creado al menú:

  1. menuDTRK.customItems.push(quienes, trabajos);

-Poner listeners a los elementos del menú que hemos creado. Es decir, hemos creado las variables "quienes" y "trabajos", las hemos puesto en el menú, y ahora tenemos que decir que pasa cuando el usuario clica en ellas:

  1. quienes.addEventListener( ContextMenuEvent.MENU_ITEM_SELECT, quienesSelect);
  2. trabajos.addEventListener( ContextMenuEvent.MENU_ITEM_SELECT, trabajosSelect);
  3.  

-Por último creamos las funciones que hemos dicho que se van a ejecutar. En este caso lo que yo hago es llamar a una función para cargar un archivo:

  1. function quienesSelect(e:Event):void {
  2. cargarContenido("swf/quienes.swf")
  3. }
  4.  
  5. function trabajosSelect(e:Event):void {
  6. cargarContenido("swf/galeria_dtrk.swf")
  7. }

Otra opción que tenemos, es eliminar los elementos que vienen por defecto en el menú contextual (se eliminan todos menos "Configuración" y "Acerca de..."):

  1. menuDTRK.hideBuiltInItems();

Comentarios:
Alfredo dijo:
Exelente la claridad de la explicacion. Para recomendar.
Iván Gajate dijo:
Está guay solo aportar que hay un límite de 15 elementos personalizados en el menú contextual. Si pones mas, no se ven y no te da error :(
Iktwo dijo:
Pues soy un novato en esto, pero no me funcionó, no se que estoy haciendo mal.. escribí esto: var menu:ContextMenu = new ContextMenu(); var menuItem1:ContextMenuItem = new ContextMenuItem("TEST"); var menuItem2:ContextMenuItem = new ContextMenuItem("TEST"); menu.hideBuiltInItems(); menu.customItems.push(menuItem1, menuItem2); y no me oculta ni agrega los nuevos..
Iktwo dijo:
Pues soy un novato en esto, pero no me funcionó, no se que estoy haciendo mal.. escribí esto: var menu:ContextMenu = new ContextMenu(); var menuItem1:ContextMenuItem = new ContextMenuItem("TEST"); var menuItem2:ContextMenuItem = new ContextMenuItem("TEST"); menu.hideBuiltInItems(); menu.customItems.push(menuItem1, menuItem2); y no me oculta ni agrega los nuevos..
Javier dijo:
Ami me pasa lo mismo que Iktwo, nose si tendremos que poner algo mas o cambio o falta algo, espero alguien pueda resolver esto, estoy usando CS4 con as3.0
Javier dijo:
Porcierto creo que te falto el metodo cargarContenido(); en tus funciones no lo pusiste, aun asi no logro hacer lo que tu dices haciendo mi propio metodo jejeje
Javier dijo:
var my_menu:ContextMenu = new ContextMenu(); my_menu.hideBuiltInItems(); var quienes = new ContextMenuItem("QUIENES SOMOS"); var trabajos = new ContextMenuItem("TRABAJOS"); quienes.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, quienesSelect); trabajos.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, trabajosSelect); function quienesSelect(e:Event):void { //cargarContenido("pr.swf") trace("Entro en quienes..."); //Codigo para el evento 2 } function trabajosSelect(e:Event):void { trace("Entro en trabajos..."); //Codigo para el evento 2 } my_menu.customItems.push(quienes, trabajos); contextMenu = my_menu;
Alejandro dijo:
No funciona tal cuál está explicado, he checado otros tutoriales y tampoco, hay un paso que se está omitiendo.
Alejandro dijo:
Lo que es no leer bien el título, quiza el error sea haber trabajado esto en AS2.0 y no en 3.0 como dice.
Alejandro dijo:
nop... aun así nada
killton dijo:
Sucede que al vato se le olvidó añadir el menu al objeto en cuestión por ejemplo: Si quieres que el movieClip tenga el menu entonces debes agregarlo: var cm:ContextMenu = new ContextMenu(); cm = new ContextMenu(); cm.hideBuiltInItems(); var cmi:ContextMenuItem ; cmi = new ContextMenuItem("Mi item"); cmi.addEventListener (ContextMenuEvent.MENU_ITEM_SELECT, miFuncionMenu); cm.customItems.push(cmi); mc.contextMenu = cm; //donde mc es el objeto al cual le quieres agregar el menu contextual
chaparral dijo:
Hola, será que este código funciona en Actionscript 2.0, o hay otra forma de hacerlo?
Dejar un comentario:
Tu nombre (obligatorio):

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

Web: