package com.air
{
import flash.desktop.NativeApplication;
import flash.desktop.SystemTrayIcon;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.NativeWindow;
import flash.display.NativeWindowDisplayState;
import flash.display.NativeWindowInitOptions;
import flash.display.NativeWindowType;
import flash.display.Stage;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.NativeWindowDisplayStateEvent;
import flash.net.URLRequest;
/**
* 一个快速添加Icon 图标的类
*/
public class AirIcon
{
private static var iconImage:BitmapData
private static var nativeWindow:NativeWindow;
public function AirIcon()
{
}
/**
* @param url 添加一个 图标链接
* @param nativeWindow 一个窗口引用
*/
public static function addIcon(url:String,nativeWindow:NativeWindow):void
{
AirIcon.nativeWindow=nativeWindow;
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadCompleteFun);
loader.load(new URLRequest(url));
nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGE, onMinWindowStateHandler);
}
private static function onLoadCompleteFun(event:Event):void
{
event.currentTarget.removeEventListener(Event.COMPLETE, onLoadCompleteFun);
iconImage=event.currentTarget.content.bitmapData;
if (NativeApplication.supportsSystemTrayIcon)
{
SystemTrayIcon(NativeApplication.nativeApplication.icon).addEventListener(MouseEvent.CLICK, onActiveWindow);
NativeApplication.nativeApplication.icon.bitmaps=[iconImage];
}
}
private static function onMinWindowStateHandler(event:NativeWindowDisplayStateEvent):void
{
if(event.afterDisplayState==NativeWindowDisplayState.MINIMIZED)
{
minWindow();
}
}
private static function minWindow():void
{
nativeWindow.visible=false;
NativeApplication.nativeApplication.autoExit = false;
NativeApplication.nativeApplication.icon.bitmaps=[iconImage];
}
private static function onActiveWindow(event:MouseEvent):void
{
nativeWindow.restore();
nativeWindow.visible=true;
nativeWindow.orderToFront();
NativeApplication.nativeApplication.icon.bitmaps=[];
}
}
}
这段时间经常做Air 的相关的小工具,大量的重复的代码有时候想懒惰一下,添加上这个快速添加图标的方法,同时还支持缩小和打开窗口的内容,算是一个比较简单的方法,做一些简单实验比较快速。
方法如下
AirIcon.addIcon("image/16x16.png",nativeWindow);