[转] 在发布一个鼠标右键的公用类
http://bbs.9ria.com/viewthread.php?tid=78302&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000
/**鼠标右键类 v1.3@author 大陆仔仔@http://daluzai.net@date 2011-04-07*/package daluzai{ import flash.ui.ContextMenu; import flash.ui.ContextMenuItem; import flash.events.ContextMenuEvent; public class QuickMenu { //创建菜单对象 var quick_obj:ContextMenu=new ContextMenu(); //舞台指针 var get_stage_:Object; /*** 提供外部接口 */ public function call_QuickMenu(get_stage,caption_arr,fun_arr,explode_arr) { //全局变量赋值 get_stage_=get_stage; //隐藏FLASH常用的右键 remove_quick(); //创建新右键内容 new_quick(caption_arr,fun_arr,explode_arr); //完成外部菜单 get_stage_.contextMenu =quick_obj; } /** 隐藏FLASH常用的右键 */ function remove_quick() { quick_obj.hideBuiltInItems(); } /** 创建新右键内容 caption_arr 文字菜单数组 fun_arr 菜单函数数组 explode_arr 切割菜单 */ function new_quick(caption_arr,fun_arr,explode_arr) { //创建一个空数组 var add_arr:Array=[]; //是否切割菜单 var is_explode:Boolean; //数组长度 var caption_arr_length:Number=caption_arr.length; //循环遍历菜单内容,操作函数 for (var i:Number=0; i<caption_arr_length; i++) { //切割菜单 for (var j:Number=0; j<explode_arr.length; j++) { if (explode_arr[j]==i) { is_explode=true; break } else { is_explode=false; } } //创建遍历菜单字幕 var quickItem_obj:ContextMenuItem=new ContextMenuItem(caption_arr[i],is_explode); //创建遍历监听 quickItem_obj.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,fun_arr[i]); //添加到新菜单 quick_obj.customItems.push(quickItem_obj); } } }}
文档类&或者其他实用类也行
package { import flash.display.Sprite; import daluzai.QuickMenu; public class Ga extends Sprite { var quickuickMenu=new QuickMenu(); var get_stage:Object=this; public function Ga() { var caption_arr:Array=new Array('嘎','嘎2'); var fun_arr:Array=new Array(duck,da); quick.call_QuickMenu(get_stage,caption_arr,fun_arr); } function duck(ent) { trace('嘎'); } function da(ent) { trace('嘎嘎'); } }}
补充说明
call_QuickMenu(get_stage,caption_arr,fun_arr)
这个调用接口需要三个参数,分别是舞台指针也就是this,还有就是要显示菜单的文字数组和执行函数数组
更新一次
增加了性功能,可以支持到切割菜单了。
具体方法是
explode_arr,这个参数。
一个数组,添加你要分割菜单的位置就可以了