AIR-最小化到系统托盘

package   
{
	
	import flash.desktop.*;
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	
	/**
	 * 最小化后生成系统托盘处理类
	 */
	public class SystemTray extends Sprite
	{
		private var dockImage:BitmapData;//托盘图标
		
		public function SystemTray()
		{
			
		}
		
		public function createSystemTray():void
		{
			var loader:Loader=new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, prepareForSystray);
			loader.load(new URLRequest("../assets/icon32.png")); //加载托盘图标的小图片
			stage.nativeWindow.addEventListener(Event.CLOSING, closingApplication); //监听关闭窗体事件
			stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, nwMinimized);//监听最小化窗体事件
			
		}
		
		
		//关闭窗体的事件 
		private function closingApplication(event:Event):void
		{
		        closeApp(event);
		}
		

		//生成托盘 
		private function prepareForSystray(event:Event):void
		{
			dockImage=event.target.content.bitmapData;
			if (NativeApplication.supportsSystemTrayIcon)
			{
				setSystemTrayProperties(); //设置托盘菜单的事件 
				SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu(); //生成托盘菜单   
			}
		}
		
		//生成托盘菜单项 
		private function createSystrayRootMenu():NativeMenu
		{
			var menu:NativeMenu=new NativeMenu();//菜单
			var openNativeMenuItem:NativeMenuItem=new NativeMenuItem("打开"); //菜单子项
			var exitNativeMenuItem:NativeMenuItem=new NativeMenuItem("退出");  
			openNativeMenuItem.addEventListener(Event.SELECT, undock);
			exitNativeMenuItem.addEventListener(Event.SELECT, closeApp); 
			menu.addItem(openNativeMenuItem);//将菜单项加入菜单
			menu.addItem(new NativeMenuItem("", true)); //菜单子项分隔符
			menu.addItem(exitNativeMenuItem); //将菜单项加入菜单 
			return menu;
		}
		
		//设置托盘图标的事件   
		private function setSystemTrayProperties():void
		{
			SystemTrayIcon(NativeApplication.nativeApplication.icon).tooltip="教师助手";
			SystemTrayIcon(NativeApplication.nativeApplication.icon).addEventListener(MouseEvent.CLICK, undock);
			
			
		}
		//最小化窗体   
		public function nwMinimized(event:NativeWindowDisplayStateEvent):void
		{
			
			if(event.afterDisplayState ==  "minimized")
				dock(); 
		}
		//将本地应用程序放到托盘   
		private function dock():void
		{
			stage.nativeWindow.visible=false; //设置本地程序窗体不可见   
			NativeApplication.nativeApplication.icon.bitmaps=[dockImage]; //设置托盘的图标   
		}
		//激活程序窗体   
		private function undock(evt:Event):void
		{
			stage.nativeWindow.restore();
			stage.nativeWindow.visible=true; //设置本地程序窗体可见   
			stage.nativeWindow.orderToFront(); //设置本地程序窗体到最前端   
			NativeApplication.nativeApplication.icon.bitmaps=[]; //将托盘图标清空  
			
		}
		//关闭程序窗体   
		private function closeApp(evt:Event):void
		{
			stage.nativeWindow.close();
		}
		
	}
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值