AIR程序生成系统托盘

AIR程序生成系统托盘 及 在程序最小化的时候在电脑右下角有个子定义的图标,如果对其加入事件,还可以有打开和退出的效果 在你的应用主程序的init方法中调用createSystemTray就可以了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值