Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3245275
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类:

2009-12-23 18:12:06

1.简述
    flash允许用户通过ContextMenu 类的方法和属性,通过鼠标右键添加自定义菜单项(如“放大”和“打印”)的显示。
    Flash Player 有三种类型的上下文菜单:标准菜单(当您在 Flash Player 中右键单击时出现)、编辑菜单(当您在可选择或可编辑的文本字段中右键单击时出现)和错误菜单(当 SWF 文件未能加载到 Flash Player 中时出现)。只有标准菜单和编辑菜单才能使用 ContextMenu 类进行修改。AIR 中只显示编辑菜单。
    Flash Player 中的上下文菜单添加 15 个自定义项。AIR 中对上下文菜单中的项数没有明确限制。

2.简单例子
            /** 控件dg_Users初始化,创建右键菜单
             *
             */
            private function createMenu_dg_Users():void{
                var dg_Users_contextMenu1:ContextMenu=new ContextMenu();//创建右键菜单

                dg_Users_contextMenu1.hideBuiltInItems();//隐藏内置菜单
                var renameMenuItem:ContextMenuItem=new ContextMenuItem("删除");
                dg_Users_contextMenu1.customItems.push(renameMenuItem);
                renameMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT ,menu_delUserHandler);
                dg_Users.contextMenu=dg_Users_contextMenu1;
            }

            //模块加载完成后初始化控件右键菜单
            public function init():void
            {
                createMenu_dg_Users();
            }

            /** 销毁控件dg_Users的右键菜单
             *
             */
            private function destroyMenu_dg_Users():void{
                var dg_Users_contextMenu1:ContextMenu=dg_Users.contextMenu;
                dg_Users_contextMenu1.removeEventListener(ContextMenuEvent.MENU_SELECT,menu_delUserHandler);
            }

            /** 控件dg_Users,删除用户事件
             *
             */
            private function menu_delUserHandler(evt:ContextMenuEvent):void {
                var s:StuffModel = dg_Users.selectedItem as StuffModel;
                Alert.show(s.zgh);
            }

           
           
               
                                             width="100%" height="100%"
                             fontWeight="normal"
                             horizontalCenter="0" verticalCenter="0"
                            >   
                   
                       
                       
                   

               

           
   
说明:
    1.右键菜单的原理为:新建一个ContextMenu类;修改ContextMenu对象的item属性;将这个对象赋给一个控件。dg_Users.contextMenu=dg_Users_contextMenu1;这句话可以保证新建立的菜单只应用于dg_Users这个控件。所以尽管你创建了多个右键菜单,也不用担心菜单会混乱。
    2.待解决的问题
         由于我们用到了事件监听renameMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT ,menu_delUserHandler);
         所以,最好在这个模块不用时,将这个监听给去掉,即调用方法 destroyMenu_dg_Users(),但是这个方法何时调用,我查了一些资料,没有发现相关说明和资料。
         如果不去掉这个监听,如果系统产生了过多的监听,不知道是否会引发什么问题?

参考文献:
1.Flex右键重命名的例子. http://blog.csdn.net/newskl/archive/2009/09/11/4538798.aspx
2.FLEX在某控件上创建右键实例学习. http://www.cnblogs.com/xxcainiao/archive/2008/08/05/1261246.html
阅读(8227) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~