5.12.为List创建右键菜单

5.12.1.问题
当用户在特定的条目上右键单击或按住Control 键并单击(在Macintosh 中译者注)时创建一个定制上下文菜单项来显示
5.12.2.解决方法
创建ContextMenu 和ContextMenuItem 对象并分派它们到渲染器,它们将像itemRenderer一样被分派到列表.
5.12.3.讨论
上下文菜单项是用户在flex 应用程序上右键单击或按住Control 键并单击以后出现的,默认情况下,菜单显示像flashplayer9 屏幕信息链接一样的Loop, Play, Print, Quality, Rewind,Save, 和Zoom 控制。但是你可以创建一个新的ContextMenu 对象从而很容易地定制这个菜单.简单地调用ContextMenu 的构造函数并设置contextMenu 属性的对象为创建好的显示对象,如下所示:
+展开
-ActionScript
var menu:ContentMenu = new ContextMenu();
this.contextMenu = menu;

这段代码需要在DisplayObject 上运行,也就是说,任何显示对象。用户在DisplayObject或组件上右键单击或按住Control 键并单击时被创建的定制上下文菜单项才会显示设置好的contentMenu 属性。

使用由ContextMenu 定义的customItems 数组,为上下文菜单项添加新的项。实例化新的ContextMenuItem 对象并使用push 方法将它们添加到数组。

ContextMenuItem 的构告函数具有如下信息。
+展开
-ActionScript
ContextMenuItem(caption:String, separatorBefore:Boolean = false, enabled:Boolean = true,visible:Boolean = true)

Caption 属性决定了菜单项的标题如,查询职工信息,separatorBefore 属性决定了是否需要一条细线出现在菜单中的ContextMenuItem 上以区分菜单项。最终情况下,visible 和enabled 属性决定各个条目是否是用户可见和可选的.

当用户选择该条目时ContextMenuItem 发出一个SELECT 类型的ContextMenuEvent 事件。

下面例子为List 控件创建了一个渲染器并基于List 传入的数据类型来创建上下文菜单项。
+展开
-XML
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxmlwidth="150height="80paddingLeft="10">
<mx:Script>
<![CDATA[
import flash.display.*;
override public function set data(value:Object):void {
if (value is Name) {
text1.text = value.firstName;
text2.text = value.lastName;
var personMenu:ContextMenu = new ContextMenu();
var lookupRecord:ContextMenuItem = new ContextMenuItem("Look Up Record" );
var lookupPicture:ContextMenuItem = new ContextMenuItem("Look Up Picture" );
personMenu.customItems.push(lookupRecord);
personMenu.customItems.push(lookupPicture);
this.contextMenu = personMenu;
}
else if (value is Office) {
text1.text = value.officeAddress;
text2.text = value.officeName;
var officeMenu:ContextMenu = newContextMenu();
var lookupMap:ContextMenuItem =new ContextMenuItem("Look Up Map");
lookupMap.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,showMap);
var lookupEmployees:ContextMenuItem =new ContextMenuItem("Look Up Employees");
lookupEmployees.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, showEmployees);
officeMenu.customItems.push(lookupEmployees);
officeMenu.customItems.push(lookupMap);
this.contextMenu = officeMenu;
}
}
private function showMap(event:ContextMenuEvent):void {
//do something with the map
}
private function showEmployees(event:ContextMenuEvent):void {
//do something to look up all the employees
}

]]>
</mx:Script>
<mx:Text id="text1"/>
<mx:Text id="text2"/>
</mx:VBox>

加支付宝好友偷能量挖...


评论(0)网络
阅读(79)喜欢(0)flash/flex/fcs/AIR