Flex MenuBar:在itemclick上保持打开状态

时间:2013-02-09 12:14:13

标签: actionscript-3 flex menubar

我有一个 MenuBar ,其子对象的类型为“ check ”。 E.g:

菜单

  • 菜单项A

    /列表项目检查1A

    /列表项目检查2A

    /列表项目检查3A

  • 菜单项B

    /列出项目检查1B

    /列表项目检查2B

我的问题如下:当用户点击某个项目(itemClick事件)时,如何避免隐藏MenuBar?我希望用户能够一次“检查”几个项目,而不会隐藏/关闭菜单。

奖金问题:重置所有已检查项目的最简单方法是什么? : - )

最诚挚的问候,

塞巴斯蒂安

1 个答案:

答案 0 :(得分:1)

我可以建议你的唯一方法是对类Menu进行猴子修补。我试图通过我这样做,它的工作方式与你在任务中描述的一样。

这样做的主要原因是,我们需要重新定义的函数使用此类的私有成员。所以我们不能只是覆盖它们。

我们的目标是修补功能

function mouseUpHandler(event:MouseEvent):void{...}

最后你可以看到电话

hideAllMenus();

我们应该添加一个新变量来控制我们的项目是否为“check”类型。所以你需要在beginnig

中添加这一行
var isCheck:Boolean = _dataDescriptor.getType(item) == "check";

最后这个条件

if (!isCheck) hideAllMenus();

不要忘记做一个技巧,让你的补丁类在SDK之前加载。 你可以阅读它here

这是我的工作example。 Menu1仅包含检查项目,Menu2仅包含正常项目。

可以找到整个项目here