想要的最终效果是菜单放在界面的最上方,单击每一个最终分支(也就是到叶节点 的时候 ),加载相应的moudle文件来切换不同的功能界面。
===================================================================================================
第一步,建立数据源,为菜单提供数据,用的是XMLListCollection,(相比较于array,arraylist,xml,xmllist,像XMLListCollection和ArrayListCollection这样级别较高的对象能够实现更多的功能,在不影响效率的前提下,我想还是可以作为首选的数据源的)
是写在了 <fx:Declarations>里了,因为是非可视的元素:
<mx:XMLListCollection id="myMenuData">
<fx:XMLList >
<manuitem label="文件">
<subitem label="重新登陆" data="meRelogin"></subitem>
<subitem label="退出系统"></subitem>
</manuitem>
<manuitem label="编辑">
<subitem label="拷贝"></subitem>
<subitem label="剪切"></subitem>
<subitem label="粘贴"></subitem>
</manuitem>
[
其他菜单省略。。。。。。
写了一个data属性作为函数处理的标识,用来判断点击的菜单项
插入分隔线的代码<subitem label="" type="separator"></subitem>
]
</fx:XMLList>
</mx:XMLListCollection>
=========================================================================================
第二步:
<mx:MenuBar id="mainmanu" dataProvider="{myMenuData}" change="menuHandler(event)" labelField="@label" horizontalCenter="0" width="100%" top="0" chromeColor="#4596F9">
</mx:MenuBar>
dataProvider属性连接数据源
change事件关联对菜单点击事件的处理函数
===========================================================================================================
第三步:点击事件的处理函数
//菜单处理函数
private function menuHandler(event:MenuEvent):void
{
menuChange(event.item.@data);
}
public function menuChange(data:String):void
{
switch(data)
{
case 'meRelogin':
this.currentState="login";
break;
case 'meDeptSet':
this.mainModLd.url="ODdeptSet.swf";
break;
。。。。。。