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