右键菜单: var mainMenu:NativeMenu = new NativeMenu(); var minimizeMenu:NativeMenuItem = new NativeMenuItem("Minimize"); var maximizeMenu:NativeMenuItem = new NativeMenuItem("Maximize"); var sepMenu:NativeMenuItem = new NativeMenuItem("",true); var restoreMenu:NativeMenuItem = new NativeMenuItem("Restore"); var closeMenu:NativeMenuItem = new NativeMenuItem("Close"); minimizeMenu.addEventListener(Event.Select, handleMenuClick); maximizeMenu.addEventListener(Event.Select, handleMenuClick); restoreMenu.addEventListener(Event.Select, handleMenuClick); closeMenu.addEventListener(Event.Select, handleMenuClick); mainMenu.addItem(minimizeMenu); mainMenu.addItem(maximizeMenu); mainMenu.addItem(sepMenu); mainMenu.addItem(restoreMenu); mainMenu.addItem(closeMenu); this.contextMenu=mainMenu; 系统托盘: var sysTray:SystemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon; sysTray.tooltip = "测试tray"; // sysTray.menu = this.contextMenu; sysTray.addEventListener(MouseEvent.CLICK,trayClick); 如何将应用程序最小化到托盘,然后给托盘图标加右键菜单以及添加相应的事件,来激活应用程序窗体. 整个流程: 1. 初始化应用时改变系统默认情况下以系统X事件的处理. 2. 定义新处理逻辑(本文是弹出对话框) 3. 生成托盘图标并置于状态栏 4. 给托盘图标加上右键菜单(本文是exit,和open两项) 5. 给菜单加上相应的事件 6. 大功告成 主要方法: ◦private var dockImage:BitmapData; ◦ ◦ //初始化Application里调用此方法,完成上面的第一步: ◦ public function initApplication():void{ ◦ var loader:Loader=new Loader(); ◦ loader.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray);//这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制 ◦ loader.load(new URLRequest("assets/images/32.png"));//这里先要加载托盘图标的小图片 ◦ this.addEventListener(Event.CLOSING,closingApplication);//设置关闭体的事件 ◦ } ◦ ◦ //关闭窗体的事件 ◦ public function closingApplication(event:Event):void{ ◦ event.preventDefault();//阻止默认的事件 ◦ Alert.yesLabel="Close"; ◦ Alert.noLabel="Mini"; ◦ Alert.show("Close or Minimize?", "Close?", 3, this, alertCloseHandler);//弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章. ◦ } ◦ //根据用户的选择来判断做什么,这里选择是就是关闭,选择否(Mini)就是最小化到托盘. ◦ private function alertCloseHandler(event:CloseEvent):void{ ◦ if(event.detail==Alert.YES){ ◦ closeApp(event); ◦ }else{ ◦ dock();//最小化到托盘 ◦ } ◦ } ◦ ◦ //生成托盘 ◦ public function prepareForSystray(event:Event):void{ ◦ dockImage=event.target.content.bitmapData; ◦ if(NativeApplication.supportsSystemTrayIcon){ ◦ setSystemTrayProperties();//设置托盘菜单的事件 ◦ SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu();//生成托盘菜单 ◦ } ◦ } ◦ ◦ public function createSystrayRootMenu():NativeMenu{ ◦ var menu:NativeMenu = new NativeMenu(); ◦ var openNativeMenuItem:NativeMenuItem = new NativeMenuItem("Open");//生成OPEN菜单项 ◦ var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem("Exit");//同理 ◦ openNativeMenuItem.addEventListener(Event.SELECT, undock); ◦ exitNativeMenuItem.addEventListener(Event.SELECT, closeApp);//添加EXIT菜单项事件 ◦ menu.addItem(openNativeMenuItem); ◦ menu.addItem(new NativeMenuItem("",true));//separator ◦ menu.addItem(exitNativeMenuItem);//将菜单项加入菜单 ◦ ◦ return menu; ◦ ◦ } ◦ //设置托盘图标的事件 ◦ private function setSystemTrayProperties():void{ ◦ SystemTrayIcon(NativeApplication.nativeApplication .icon).tooltip = "TurboSquid squidword"; ◦ SystemTrayIcon(NativeApplication.nativeApplication .icon).addEventListener(MouseEvent.CLICK, undock); ◦ stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, nwMinimized); ◦ } ◦ ◦//最小化窗体 ◦ private function nwMinimized(displayStateEvent:NativeWindowDisplayStateEvent):void { ◦ if(displayStateEvent.afterDisplayState == NativeWindowDisplayState.MINIMIZED) { ◦ displayStateEvent.preventDefault();//阻止系统默认的关闭窗体事件 ◦ dock();//将程序放入托盘 ◦ } ◦ } ◦ ◦ //将本地应用程序放到托盘 ◦ public function dock():void { ◦ stage.nativeWindow.visible = false; //设置本地程序窗体不可见 ◦ NativeApplication.nativeApplication.icon.bitmaps = [dockImage];//设置托盘的图标 ◦ } ◦ ◦ //激活程序窗体 ◦ public function undock(evt:Event):void { ◦ stage.nativeWindow.visible = true;//设置本地程序窗体可见 ◦ stage.nativeWindow.orderToFront();//设置本地程序窗体到最前端 ◦ NativeApplication.nativeApplication .icon.bitmaps = [];将托盘图标清空 ◦ } ◦ ◦ //关闭程序窗体 ◦ private function closeApp(evt:Event):void { ◦ stage.nativeWindow.close(); ◦ } ◦