FLEX AIR添加系统托盘图标步骤
转http://hi.baidu.com/half_cup_coffee/blog/item/0457a3dd517127d48c1029a0.htmlAIR也像其它桌面应用程序一样,可以为其添加系统托盘图标。
网上此类文章较多,这里简要说明一下,并列出步骤,以及关键代码
简要说明
1.针对托盘图标的操作即对当前AIR应用的nativeApplication.icon属性的相关操作,例如bitmaps,menu属性
2.对于Windows和Mac系统,nativeApplication.icon的实例对象是不一样的,Windows返回的是SystemTrayIcon对象,而Mac(苹果系统)返回的是DockIcon对象(这里以Windows系统为例)
3.添加图标到系统托盘,只需要设置当前AIR应用的nativeApplication.icon.bitmaps属性,就可以在系统托盘看到图标,但是这时还没有任何事件响应,需要进一步处理
4.添加系统托盘的左键单击事件,这种情况一般就是恢复窗口到正常状态
为SystemTrayIcon添加MouseEvent.CLICK事件
5.添加系统托盘图标的右键事件,这里一般是个菜单列表,例如打开、退出等。
需要设置SystemTrayIcon的menu属性,这里需要说明的是
6.nativeWindow.visible控制了AIR应用在任务栏上(不是系统托盘)的图标显示
添加系统托盘图标步骤
1.最小化事件时添加创建系统托盘图标,可直接添加到一个按钮的CLICK事件来测试
//最小化到系统托盘处理
private function dockHandler():void{??? this.nativeWindow.visible = false;??? //添加任务栏图标??? addSysTrayIcon();
}
[Embed(source='assets/AIRApp_16.png')]
private var icon16:Class;
private function addSysTrayIcon():void{??? //icon16是一个图片文件,大小为16*16??? this.nativeApplication.icon.bitmaps = [new icon16()];??? if(NativeApplication.supportsSystemTrayIcon){??? ??? var sti:SystemTrayIcon = SystemTrayIcon(this.nativeApplication.icon);??? ??? //创建菜单列表??? ??? sti.menu = createSysTrayMenu();??? ??? //单击系统托盘图标时恢复窗口??? ??? sti.addEventListener(MouseEvent.CLICK,restoreFromSysTrayHandler);??? }
}
2.创建系统托盘图标上下文菜单
private function createSysTrayMenu():NativeMenu{??? var menu:NativeMenu = new NativeMenu();??? var labels:Array = ["打开","","退出程序"];??? var names:Array = ["mnuOpen","mnuSep1","mnuExit"];??? for (var i:int = 0;i<labels.length;i++){??? ??? //如果标签为空的话,就认为是分隔符??? ??? var menuItem:NativeMenuItem = new NativeMenuItem( labels[i],labels[i]=="");??? ??? menuItem.name = names[i];??? ??? menuItem.addEventListener(Event.SELECT,sysTrayMenuHandler );//菜单处理事件??? ??? menu.addItem( menuItem );??? ??? ??? ??? ??? }??? return menu;
}
3.添加系统托盘菜单事件,根据菜单名称来处理
private function sysTrayMenuHandler(event:Event):void{??? switch(event.target.name){??? ??? case "mnuOpen"://打开菜单??? ??? ??? undockHandler();??? ??? ??? break;??? ??? case "mnuExit"://退出菜单??? ??? ??? exitHandler();??? ??? ??? break;??? }
}
4.从系统托盘恢复到任务栏
private function undockHandler():void{??? this.nativeWindow.visible = true;??? this.nativeApplication.icon.bitmaps = [];??? //窗口提到最前面??? this.nativeWindow.orderToFront();??? //激活当前窗口??? this.activate();
}
5.退出程序的菜单事件
private function exitHandler():void{??? this.exit();
}
以上为添加AIR图标的一些关键之处,仅供参考