如何防止mx:菜单栏(Flex)在其mouseOver/rollOver事件期间打开弹出子菜单



我使用带有xml数据的mx:MenuBar组件来显示菜单。我所看到的基本行为是,最初在单击顶级菜单项(即在水平栏上)时,弹出式子菜单打开。然后不需要点击任何地方,如果我把鼠标移到水平菜单栏上,其他顶级菜单的弹出子菜单就会打开。

这个行为似乎是不一致的。弹出式子菜单应该在单击任何顶级菜单项(水平菜单栏)时打开,或者仅在鼠标移到菜单栏项上/滚动菜单栏项时打开。

我希望弹出子菜单打开只有在点击顶层菜单(水平菜单栏)。因此,我为mouseOver和rollOver事件添加了事件处理程序(不知道悬停在水平菜单栏上实际生成的是哪个事件)。在事件处理程序中,我调用event. preventdefault()方法来防止默认行为。E打开弹出子菜单)。但是,什么都不起作用。我觉得,我无法控制它。

谁能说一下如何抑制默认行为,只在单击菜单栏事件时打开弹出子菜单

您可以使用"monkey patchching "来重新定义MenuBar类的行为。通过重写方法来实现这一点并不容易,因为它们是私有的。

这是一个带有活动"view source"属性的工作示例。

要重写的函数是
private function mouseOverHandler(event:MouseEvent):void
{
}

应该删除激活新菜单的代码行。

最新更新