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