2.9 为菜单控件创建事件处理器
2.9.1 问题
你需要让用户与菜单的交互起作用。
2.9.2 解答
为 MenuBar 控件的 itemClick 事件添加侦听器。
2.9.3 讨论
为了响应菜单栏交互,为 MenuBar 控件的 itemClick 事件指派一个侦听器函数 handleMenuClick 。无论何时,只要用户选择了一个菜单项, itemClick 事件会被触发。一个 MenuEvent 对象会被侦听器函数接收到,作为它的参数。 MenuEvent 对象包含了此事件被触发处的菜单项的信息。 MenuEvent 的 item 属性包含了对 dataProvider 里的某项的引用 ,该项是与触发该事件的菜单项相关联的。这就是你会用到的代码:
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical">
<mx:MenuBar
labelField="@label"
itemClick="handleMenuClick(event)">
<mx:XMLList>
<menuitem label="File">
<menuitem label="New"/>
<menuitem label="Open"/>
<menuitem label="Close" enabled="false"/>
</menuitem>
<menuitem label="Edit"/>
<menuitem label="Source"/>
<menuitem label="View">
<menuitem label="50%"
type="radio" groupName="one"/>
<menuitem label="100%"
type="radio" groupName="one"
selected="true"/>
<menuitem label="150%"
type="radio" groupName="one"/>
</menuitem>
</mx:XMLList>
</mx:MenuBar>
<mx:Label id="disp0_lbl"/>
<mx:Script>
<![CDATA[
import mx.events.MenuEvent;
private function handleMenuClick(evt:MenuEvent):void {
this.disp0_lbl.text = evt.item.@label + " was selected";
}
]]>
</mx:Script>
</mx:Application>
注意:由于 dataProvider 是 E4X 格式的,这个例子使用了 E4X 记号“ @label ”来搜寻 label 属性。 MenuBar 控件也支持别的事件类型,例如 change, itemRollOut, itemRollOver, menuHide, 和 menuShow 。