AIR程序生成系统托盘
AIR程序生成系统托盘 及 在程序最小化的时候在电脑右下角有个子定义的图标,如果对其加入事件,还可以有打开和退出的效果
在你的应用主程序的init方法中调用createSystemTray就可以了
public function createSystemTray():void { var loader:Loader=new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, prepareForSystray); //这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制 loader.load(new URLRequest("http://gamespics.com/wp-content/uploads/2011/03/cd.jpg")); //这里先要加载托盘图标的小图片 http://gamespics.com/wp-content/uploads/2011/03/cd.jpg this.addEventListener(Event.CLOSING, closingApplication); //设置关闭体的事件 } //public function handleMenuClick(event:Event):void //{ // mx.controls.Alert.show("ok"); //} //关闭窗体的事件 public function closingApplication(event:Event):void { event.preventDefault(); //阻止默认的事件 Alert.yesLabel="关闭"; Alert.noLabel="最小化"; Alert.show("关闭 OR 最小化?", "", 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菜单项 var exitNativeMenuItem:NativeMenuItem=new NativeMenuItem("退出"); //同理 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(); }