1

我有一个MenuBar,其中的对象具有 type=" check " 的子项。例如:

菜单

  • 菜单项 A

    / 清单项目检查 1A

    / 列出项目检查 2A

    / 清单项目检查 3A

  • 菜单项 B

    / 列出项目检查 1B

    / 列出项目检查 2B

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

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

最好的祝福,

塞巴斯蒂安

4

1 回答 1

1

我可以建议您的唯一方法是对 Menu 类进行猴子修补。我试图由我来做,它就像你在任务中描述的那样工作。

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

我们任务的目的是修补功能

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

在它的最后你可以看到调用

hideAllMenus();

我们应该添加一个新变量来控制我们的项目是否属于“检查”类型。所以你需要在开始时添加这一行

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

最后这个条件

if (!isCheck) hideAllMenus();

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

这是我的工作示例。Menu1 只有检查项目,Menu2 只有正常项目。

整个项目可以在这里找到

于 2013-02-14T23:09:30.790 回答