使用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类简单。

发表评论

电子邮件地址不会被公开。 必填项已用*标注