我有一个 MenuBar ,其子对象的类型为“ check ”。 E.g:
菜单
菜单项A
/列表项目检查1A
/列表项目检查2A
/列表项目检查3A
菜单项B
/列出项目检查1B
/列表项目检查2B
我的问题如下:当用户点击某个项目(itemClick事件)时,如何避免隐藏MenuBar?我希望用户能够一次“检查”几个项目,而不会隐藏/关闭菜单。
奖金问题:重置所有已检查项目的最简单方法是什么? : - )
最诚挚的问候,
塞巴斯蒂安
答案 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