曾有同行问我在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类简单。