FB4 AIR 最小化托盘(右下角)

本文介绍如何使用Adobe Flex创建应用程序,并实现系统托盘图标的功能。文章详细讲解了加载图标资源、设置系统托盘属性、创建托盘菜单以及处理应用最小化到托盘和从托盘恢复显示的操作。

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" >
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.CloseEvent;
private var dockImage:BitmapData;
public function initApplication():void {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, prepareForSystray);
loader.load(new URLRequest("assets/ok.png"));
this.addEventListener(Event.CLOSING, closingApplication);
}

private function closingApplication(evt:Event):void {
evt.preventDefault();
Alert.yesLabel = "Close";
Alert.noLabel = "Minimize";
Alert.show("Close or minimize?", "Close?", 3, this, alertCloseHandler);
}
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();
}
}
private function createSystrayRootMenu():NativeMenu{
var menu:NativeMenu = new NativeMenu();
var openNativeMenuItem:NativeMenuItem = new NativeMenuItem("Open");
var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem("Exit");
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 = "Systray test application";
SystemTrayIcon(NativeApplication.nativeApplication .icon).addEventListener(MouseEvent.CLICK, undock);
stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, nwMinimized); //Catch the minimize event
}
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();
NativeApplication.nativeApplication .icon.bitmaps = []; //clean this icon
}
]]>
</fx:Script>
<s:Button click="closingApplication(event);" creationComplete="initApplication()"/>
</s:WindowedApplication>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值