0

我使用带有 xml 数据的 mx:MenuBar 组件来提供菜单。我看到的基本行为是,最初单击顶级菜单项(即在水平条上)时,弹出子菜单打开。然后不点击任何地方,如果我将鼠标悬停在水平菜单栏上/滚动,则会打开其他顶级菜单的弹出子菜单。

这种行为似乎不一致。弹出子菜单应在单击任何顶级菜单项(水平菜单栏)时打开,或者仅在鼠标悬停/滚动菜单栏项时打开。

我希望仅在单击顶级菜单(水平菜单栏)时打开弹出子菜单。所以我为 mouseOver 和 rollOver 事件添加了事件处理程序(不知道在悬停在水平菜单栏上时实际生成了哪个事件)。在事件处理程序中,我调用了 event.preventDefault() 方法来防止默认行为(即打开弹出子菜单)。但是,没有任何效果。我觉得,我无法控制它。

谁能说如何抑制默认行为并仅在菜单栏的单击事件时打开弹出子菜单。

4

1 回答 1

0

您可以使用“猴子补丁”来重新定义 MenuBar 类的行为。通过重写方法来做到这一点并不容易,因为它们是私有的。

这是一个具有活动“查看源”属性的工作示例。

要重写的函数是

private function mouseOverHandler(event:MouseEvent):void
{
}

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

于 2013-03-29T10:10:40.670 回答