2009-10-16 18 views
8

Estoy desarrollando una aplicación flexible y quiero agregarle un menú contextual. Lo tengo con este código:Ocultar las opciones predeterminadas en el menú contextual del botón derecho en flex

var myMenu:ContextMenu = new ContextMenu(); 
myMenu.hideBuiltInItems(); 
var defaultItems:ContextMenuBuiltInItems = myMenu.builtInItems; 
defaultItems.print = false; 

var item:ContextMenuItem = new ContextMenuItem("Go to google"); 
myMenu.customItems.push(item); 
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuItemSelectHandler); 

this.contextMenu = myMenu; 

Pero tengo un problema. El menú muestra cuatro opciones predeterminadas (Configuración, sobre flash ...) Me gustaría ocultarlas. Con defaultItems.print = false; Oculté la opción de impresión, pero no sé cómo ocultar otras. ¿Alguien sabe cómo hacer eso? Gracias.

+0

Kezem, me encontré con este problema también trabajando en una aplicación Flex que estaba reemplazando una aplicación Java Swing. Hubo algunas funcionalidades expuestas en un menú contextual y las cosas de Configuración confundían a nuestros usuarios. Hice algunas excavaciones en línea y encontré la solución que describí a continuación. –

Respuesta

9

Como dice la referencia para ContextMenu,

No se puede quitar la configuración del menú elemento en el menú contextual. La opción del menú de configuración se requiere en Flash para que los usuarios puedan acceder a la configuración que afecta a la privacidad y al almacenamiento en sus computadoras. También no se puede eliminar el elemento del menú Acerca de, que se requiere para que los usuarios puedan averiguar qué versión de Flash Player están usando.

Así que solo tendrá que vivir con los artículos Settings y About. Para otros elementos predeterminados, consulte la referencia para ContextMenuBuiltInItems.

+0

Siempre hay una solución. Mira mi respuesta. –

14

Hay una técnica para ocultar la configuración, sobre el flash, etc. desde el menú contextual en Flash. El concepto de alto nivel es usar JavaScript en el contenedor HTML para desactivar el clic derecho sobre el SWF. Capture el evento y luego envíelo a su aplicación Flex utilizando la API ExternalInterface que le permite llamar a funciones Flex desde JavaScript. Llame a una función definida en su aplicación Flex para mostrar un ContextMenu personalizado con solo los elementos de menú que desee. Esto esquiva el comportamiento de cableado en Flash/Flex, donde un clic con el botón derecho del mouse siempre causa un ContextMenu con la Configuración, Acerca de las cosas que aparecerán.

Una guía detallada se puede encontrar en este link.

+0

muy hacky pero genial! :-) – nalply

Cuestiones relacionadas