ActionScript3(AS3)类库学习之(八)——自定义上下文菜单

一.定义菜单项
用ContextMenuItem类来表示上下文菜单中的项
1.新建菜单项
var menuitem:ContextMenuItem = new ContextMenuItem(caption);

2.菜单项标题的限制
a.菜单项必须包含一个可见字符且不能超过 100 个字符。
b.控制字符、换行符和其他空白字符将被忽略。
c.与内置菜单项或其他自定义菜单项相同的标题将被忽略,比较时将不考虑大小写、标点符号或空白。
d.不允许使用以下标题及其中文
 Save
 Zoom In
 Zoom Out
 100%
 Show All
 Quality
 Play
 Loop
 Rewind
 Forward
 Back
 Movie not loaded
 About
 Print
 Show Redraw Regions
 Debugger
 Undo
 Cut
 Copy
 Paste
 Delete
 Select All
 Open
 Open in new window
 Copy link
 e.标题中不能包含以下词:
 Adobe
 Macromedia
 Flash Player
 Settings

3.用separatorBefore表示指定的菜单项上方是否显示分隔条。

4.用enabled和visible来控制菜单项是否可用,是否可见

5.监听flash.events.ContextMenuEvent.MENU_ITEM_SELECT来添加菜单项点击事件

二.定义菜单
1.新建菜单
var menu:ContextMenu = new ContextMenu();

2.插入自定义菜单项
所有的自定义菜单项都存放在ContextMenu对象的customItems数组里,通过将菜单项加入数组来增加菜单项
menu.customItems.push(menuitem);
注意:自定义菜单项不能超过15个。

3.控制内置菜单项
用hideBuiltInItems()来隐藏菜单中的所有内置菜单项("设置"除外)
通过设置builtInItems属性来控制forwardAndBack、loop、play、print、quality、rewind、save 和 zoom菜单项
用clipboardMenu来指定是否应使用剪贴板菜单。
通过设置clipboardItems属性来控制cut、copy、paste、delete 和 selectAll菜单项。

4.设置link属性,以显示链接上下文菜单

三.使用自定义菜单
this.contextMenu = menu;

四.运行时菜单
如果想要在运行时根据运行状态定义不同的菜单,可以监听menuselect事件
下面的例子在点红矩形时添加菜单项红色,蓝矩形时添加菜单项蓝色

var rect1:MenuRect = new MenuRect(100, 100);
rect1.color = 0xFF0000;
rect1.mnname = "red";
var rect2:MenuRect = new MenuRect(100,100);
rect2.color = 0x0000FF;
rect2.mnname = "blue";
rect2.x = 120;
addChild(rect1);
addChild(rect2);
var menu:ContextMenu = new ContextMenu();
menu.addEventListener(ContextMenuEvent.MENU_SELECT, showmenu);
this.contextMenu = menu;

private function showmenu(e:ContextMenuEvent):void
{
  var menu:ContextMenu = e.target as ContextMenu;
  menu.customItems.length = 0;
  if(e.mouseTarget is MenuRect){
    var rect:MenuRect = e.mouseTarget as MenuRect;
    var mi:ContextMenuItem = new ContextMenuItem(rect.mnname);      
    menu.customItems.push(mi);
} }

 



posted @ 2013-04-10 20:59  Jingle Guo  阅读(1099)  评论(0编辑  收藏  举报