我使用一个带有xml数据的mx:MenuBar组件来带来一个菜单。我所看到的基本行为是,最初单击顶层菜单项(即在水平条上)时,弹出子菜单打开。然后不点击任何地方,如果我将鼠标放在水平菜单栏上/滚动到水平菜单栏上,其他顶级菜单的弹出子菜单就会打开。
这种行为似乎是不一致的。弹出子菜单应在单击任何顶层菜单项(水平菜单栏)时打开,或仅在菜单栏项的鼠标悬停/滚动时打开。
我希望弹出子菜单仅在单击顶层菜单(水平菜单栏)时打开。因此,我为mouseOver和rollOver事件添加了事件处理程序(不知道悬停在水平菜单栏上时实际会生成哪个事件)。在事件处理程序中,我调用了event.preventDefault()方法来防止默认行为(即打开弹出子菜单)。但是,什么都不起作用。我觉得,我无法控制它。
谁能说出如何抑制默认行为,并仅在菜单栏的单击事件时打开弹出子菜单。
发布于 2013-03-29 18:10:41
您可以使用“猴子修补”来重新定义MenuBar类的行为。要通过重写方法来做到这一点并不容易,因为它们是私有的。
这是一个具有活动的"view example“属性的工作源代码。
要重写的函数是
private function mouseOverHandler(event:MouseEvent):void
{
}应该删除激活新菜单的代码行。
https://stackoverflow.com/questions/15532911
复制相似问题