MenuBar的itemClick事件只能监听到子菜单的点击事件,对于顶级菜单的点击则不能监听到,如何来响应顶级菜单的点击事件呢?可以用下面的方法:
比如有个id为TopMenu的menubar
我们用两个侦听器来监测menubar的点击事件,一个是Menu的itemClick事件还有一个是click事件.
就是说用Menu的itemClick的事件还监测子Menu的点击事件,再用click事件检测menubar的顶级菜单的点击事件.
具体:
import mx.controls.menuClasses.MenuBarItem;//需要用到这个类来得到子菜单
//itemClick事件
private function itemClick(e:MenuEvent):void
{
trace(e.label)
}
//MouseEvent
private function doClick():void
{
//用MenuBarItem.data是否为空来判断该MenuBarItem是否有子Menu,如果有
就不触发事件,这个可以根据自己的需要来设置
if(TopMenu.selectedIndex!=-1&&MenuBarItem(TopMenu.getChildAt(TopMenu.selectedIndex+1)).data=="")
{
trace(MenuBarItem(TopMenu.getChildAt(TopMenu.selectedIndex+1)).data.@name);
//激活所有MenuBar的顶级MenuBarItem
activeMenu();
//使点过的按钮不能再点
MenuBarItem(TopMenu.getChildAt(TopMenu.selectedIndex+1)).enabled=false;
}
}
//激活所有MenuBar的顶级MenuBarItem
private function activeMenu():void
{
for each(var item:MenuBarItem in TopMenu.menuBarItems)
{
item.enabled=true;
}
}
比如有个id为TopMenu的menubar
我们用两个侦听器来监测menubar的点击事件,一个是Menu的itemClick事件还有一个是click事件.
就是说用Menu的itemClick的事件还监测子Menu的点击事件,再用click事件检测menubar的顶级菜单的点击事件.
具体:
import mx.controls.menuClasses.MenuBarItem;//需要用到这个类来得到子菜单
//itemClick事件
private function itemClick(e:MenuEvent):void
{
trace(e.label)
}
//MouseEvent
private function doClick():void
{
//用MenuBarItem.data是否为空来判断该MenuBarItem是否有子Menu,如果有
就不触发事件,这个可以根据自己的需要来设置
if(TopMenu.selectedIndex!=-1&&MenuBarItem(TopMenu.getChildAt(TopMenu.selectedIndex+1)).data=="")
{
trace(MenuBarItem(TopMenu.getChildAt(TopMenu.selectedIndex+1)).data.@name);
//激活所有MenuBar的顶级MenuBarItem
activeMenu();
//使点过的按钮不能再点
MenuBarItem(TopMenu.getChildAt(TopMenu.selectedIndex+1)).enabled=false;
}
}
//激活所有MenuBar的顶级MenuBarItem
private function activeMenu():void
{
for each(var item:MenuBarItem in TopMenu.menuBarItems)
{
item.enabled=true;
}
}