• 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);
    } }





    作者:Jingle Guo
    出处:http://www.cnblogs.com/studynote/
    若标题中有“转载”字样,则本文版权归原作者所有。若无转载字样,本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    esper(4-5)- Context 条件
    esper(4-4)-OverLapping Context
    esper(4-3)-Non-Overlapping Context
    esper(4-2)-Category Context
    esper(4-1)-简单context
    esper(3)-窗口&聚合分组
    esper(2)-事件类型
    java常用代码
    idea(3)-jetty配置
    BP(反向传播)算法原理及推导
  • 原文地址:https://www.cnblogs.com/studynote/p/3013119.html
Copyright © 2020-2023  润新知