我有一个MenuBar,其中的对象具有 type=" check " 的子项。例如:
菜单
菜单项 A
/ 清单项目检查 1A
/ 列出项目检查 2A
/ 清单项目检查 3A
菜单项 B
/ 列出项目检查 1B
/ 列出项目检查 2B
我的问题如下:当用户单击一个项目(itemClick 事件)时,如何避免 MenuBar 隐藏?我希望用户能够一次“检查”多个项目,而无需隐藏/关闭菜单。
额外问题:重置所有选中项目的最简单方法是什么?:-)
最好的祝福,
塞巴斯蒂安
我有一个MenuBar,其中的对象具有 type=" check " 的子项。例如:
菜单
菜单项 A
/ 清单项目检查 1A
/ 列出项目检查 2A
/ 清单项目检查 3A
菜单项 B
/ 列出项目检查 1B
/ 列出项目检查 2B
我的问题如下:当用户单击一个项目(itemClick 事件)时,如何避免 MenuBar 隐藏?我希望用户能够一次“检查”多个项目,而无需隐藏/关闭菜单。
额外问题:重置所有选中项目的最简单方法是什么?:-)
最好的祝福,
塞巴斯蒂安
我可以建议您的唯一方法是对 Menu 类进行猴子修补。我试图由我来做,它就像你在任务中描述的那样工作。
这样做的主要原因是,我们需要重新定义的函数使用这个类的私有成员。所以我们不能只是覆盖它们。
我们任务的目的是修补功能
function mouseUpHandler(event:MouseEvent):void{...}
在它的最后你可以看到调用
hideAllMenus();
我们应该添加一个新变量来控制我们的项目是否属于“检查”类型。所以你需要在开始时添加这一行
var isCheck:Boolean = _dataDescriptor.getType(item) == "check";
最后这个条件
if (!isCheck) hideAllMenus();
不要忘记做一个技巧,让你的补丁类在 SDK 之前加载。你可以在这里阅读。
这是我的工作示例。Menu1 只有检查项目,Menu2 只有正常项目。
整个项目可以在这里找到