[转] 在发布一个鼠标右键的公用类

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,这个参数。
一个数组,添加你要分割菜单的位置就可以了

你可能感兴趣的:(UI,PHP,Flash,J#,bbs)