AIR程序生成系统托盘

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();
}

转载于:https://my.oschina.net/u/263424/blog/633357

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值