自定义菜单(很好,很强大)

与菜单相关的类一共有3个
ContextMenu类
ContextMenuBuiltInItems类
//与系统内置菜单相关的类
ContextMenuItem类 //与用户自定义菜单相关的类
一不小心,就会被这几个类搞昏头。
举一例,学习之:
flashcs3 新建一个元件,随便画个什么图形。
吧元件拖动到舞台上,名称改为mc
然后复制下面的代码到主时间轴第一桢:
var cm:ContextMenu=new ContextMenu();
//定义CM对象,赋值给可视元件.
//而后的代码中,会对cm的属性进行修改。达到自定义的效果
//那么就会分别对●内置菜单 ●用户菜单 进行修改 
mc.contextMenu=cm;
//当然你也可以赋值给舞台。如下语句
//contextMenu=cm;
/////////////编辑内置菜单////////////////////////////////////////
cm.hideBuiltInItems();
/*//也可以用下面方法,选择性隐藏内置菜单
var cmb:ContextMenuBuiltInItems=new ContextMenuBuiltInItems();
cmb.print=false;
cmb.quality=false;
cmb.zoom=false;
cmb.loop=false;
cm.builtInItems=cmb; // builtInItems属性是一个ContextMenuBuiltInItems值,
// 需要先修改ContextMenuBuiltInItems的值,然后赋值给cm.builtInItems
// 属性,才能对内置菜单进行修改。
*/
////////////////////////////////////////////////////////////////////

////////////编辑用户菜单////////////////////////////////////////
var cm1:ContextMenuItem=new ContextMenuItem("菜单1",false,true,true)
var cm2:ContextMenuItem=new ContextMenuItem("菜单2",false,true,true)
var cm3:ContextMenuItem=new ContextMenuItem("菜单3",false,false,true)
cm.customItems.push(cm1); // 标题名字,分割线,可用,可见
cm.customItems.push(cm2);
cm.customItems.push(cm3);
////////////注意自定义菜单是可以在运行中动态修改的。看个人发挥了////////////

//////////////////////////侦听事件函数////////////////////////
//注意侦听的对象是ContextMenuItem,
//在下面依次对cm1,cm2,cm3,三个ContextMenuItem对象添加侦听。
cm1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,clickMenu)
cm2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,clickMenu)
cm3.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,clickMenu)
function clickMenu(e:ContextMenuEvent){
trace(e.bubbles) //false,是否冒泡
trace(e.cancelable) //false,是否能取消
trace(e.contextMenuOwner)//[object MovieClip],所属的对象
trace(e.currentTarget)//[object ContextMenuItem],
trace(e.mouseTarget)//[object MovieClip],用户右键单击以显示上下文菜单的显示列表对象。
trace(e.target)//[object ContextMenuItem]
trace(e.target.caption)//菜单1,可以从这里来判断,后续操作或者应该执行的函 数。
trace(e.currentTarget.caption)//菜单1
}
很好很强大,方便学习
posted @ 2010-02-12 11:02  与时俱进  阅读(1515)  评论(0编辑  收藏  举报
友情链接:同里老宅院民居客栈