使用NativeMenu制作AIR多级上下文菜单

曾有同行问我在Flash中怎么制作多级上下菜单。事实上,目前在Flash中只能做一级上下菜单。而AIR却没有这个限制,使用NativeMenu可以很方便地制作多级上下菜单。

import flash.display.NativeMenu;
import flash.events.Event;
import flash.display.Sprite;

var screenMenu:NativeMenu = new NativeMenu();
screenMenu.addItem(new NativeMenuItem("Full"));
screenMenu.addItem(new NativeMenuItem("Fit"));
screenMenu.addItem(new NativeMenuItem("100%"));
screenMenu.addItem(new NativeMenuItem("200%"));

var helpMenu:NativeMenu = new NativeMenu();
helpMenu.addItem(new NativeMenuItem("Email Lists"));
helpMenu.addItem(new NativeMenuItem("Home Page"));

var menu:NativeMenu = new NativeMenu();
menu.addSubmenu(screenMenu, "Screen");
menu.addSubmenu(helpMenu, "Help");
menu.addEventListener(Event.Select, selectHandler);

function selectHandler(event:Event):void {
    trace("Menu item selected: " + event.target.label);
}

var s:Sprite = new Sprite();
s.graphics.clear();
s.graphics.beginFill(0xFFFFFF);
s.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
s.graphics.endFill();
addChild(s);
s.contextMenu = menu;

菜单可以包含命令项、子菜单项和分隔线项。在本实例中,菜单项是使用addItem()方法添加到菜单中的,子菜单是通过addSubmenu()方法添加到父菜单中的。

如果用Flex来开发,我们还可以使用FlexNativeMenu组件,用法比NativeMenu类简单。

发表评论