2009-10-16 105 views
8

我正在开发一个flex应用程序,并且我想为它添加一个上下文菜单。我知道这个代码:在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; 

但我有一个问题。该菜单显示了四个默认选项(设置,关于闪光...)我想隐藏它们。使用defaultItems.print = false;我隐藏了打印选项,但我不知道如何隐藏其他人。 有谁知道如何做到这一点? 谢谢。

+0

Kezem可以找到,我就遇到了这个问题,在Flex应用程序这是更换的Java Swing应用程序太工作。在上下文菜单中显示了一些功能,而设置内容让我们的用户感到困惑。我在网上做了一些挖掘,找到了我在下面描述的解决方案。 – 2009-10-16 13:45:51

回答

9

至于ContextMenu参考说,

您不能从上下文菜单中删除设置菜单 项。 “设置”菜单项在Flash的 中是必需的,以便用户可以访问影响其隐私的 设置以及在其计算机上访问存储的 设置。您也 无法删除关于菜单项, 这是必需的,以便用户可以 找出他们正在使用的Flash Player 的哪个版本。

所以你只需要与SettingsAbout项目生活。有关其他默认项目,请参阅ContextMenuBuiltInItems的参考。

+0

总是有一个解决方法。看看我的答案。 – 2009-10-16 13:44:25

14

有一种技术可以在Flash中从上下文菜单中隐藏设置,关于闪光等。高级概念是在HTML容器中使用JavaScript来禁用SWF顶部的右键单击。捕获事件,然后使用ExternalInterface API将其转发给Flex应用程序,该API允许您从JavaScript调用Flex功能。调用Flex应用程序中定义的函数,以仅显示您想要的菜单项的自定义ContextMenu。这回避了Flash/Flex中的硬连线行为,其中右键单击总是导致ContextMenu与Settings,About stuff出现。

的详细解说可以在这个link.

+0

非常哈克但很酷! :-) – nalply 2010-11-18 12:32:14

相关问题