2013-02-09 97 views
1

我有一个菜单栏与对象有孩子的类型=“检查”。例如:Flex MenuBar:保持打开itemclick

菜单

  • 菜单项

    /列表项目检查1A

    /列表项目检查2A

    /列表项目检查3A

  • 菜单项目B

    /列表项目检查1B

    /列表项目检查2B

我的问题是:我怎样才能避免菜单栏从当用户点击一个项目(itemClick事件)在隐瞒什么?我希望用户能够一次“检查”多个项目,而不需要菜单隐藏/关闭。

奖励问题:什么是最简单的方法来重置所有选中的项目? :-)

最好的问候,

塞巴斯蒂安

回答

1

我可以告诉你,唯一的办法就是做类菜单的猴子修补。我试图通过我来完成它,它的工作原理与您在任务中描述的一样。

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

我们的使命的目的是修补功能

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

在它结束时,你可以看到通话

hideAllMenus(); 

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

var isCheck:Boolean = _dataDescriptor.getType(item) == "check"; 

这种情况在年底

if (!isCheck) hideAllMenus(); 

加入这一行,不要忘记做一招,让SDK的一个之前,你的补丁的类加载。 你可以阅读关于它here。我的工作example。 Menu1只有检查项目,Menu2只有正常的项目。

整个项目都可以找到here

+0

非常感谢Anton。我会在早上尝试这个! – Sebastian 2013-02-27 20:02:14

+0

嘿安东。我目前正在尝试实施您所建议的更改,并尝试了猴子补丁策略。但目前它似乎没有工作,所以我不得不多尝试一下。但是我想知道是否有可能看到你创建的例子的来源?我认为这将有很大的帮助:) – Sebastian 2013-03-04 17:40:10

+0

你好塞巴斯蒂安,现在你可以在我的文章结尾处找到项目链接。 – Anton 2013-03-04 18:08:05