来源:
gznofeng.javaeye.com/blog/444872
// ActionScript filep import flash.events.Event; private var dockImage:BitmapData; //初始化 public function initSystary():void{ var loader:Loader=new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray);//这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制 loader.load(new URLRequest("png/face-monkey.png"));//这里先要加载托盘图标的小图片 } //生成托盘 public function prepareForSystray(event:Event):void{ dockImage=event.target.content.bitmapData; if(NativeApplication.supportsSystemTrayIcon){ setSystemTrayProperties();//设置托盘菜单的事件 SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu();//生成托盘菜单 } } //关闭窗体的事件 public function closingApplication(event:Event):void{ event.preventDefault();//阻止默认的事件 Alert.yesLabel="Close"; Alert.noLabel="Mini"; Alert.show("Close or Minimize?", "Close?", 3, this, alertCloseHandler);//弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章. } //根据用户的选择来判断做什么,这里选择是就是关闭,选择否(Mini)就是最小化到托盘. private function alertCloseHandler(event:CloseEvent):void{ if(event.detail==Alert.YES){ closeApp(event); }else{ dock();//最小化到托盘 } } public function createSystrayRootMenu():NativeMenu{ var menu:NativeMenu = new NativeMenu(); var openNativeMenuItem:NativeMenuItem = new NativeMenuItem("Open");//生成OPEN菜单项 var msgNativeMenuItem:NativeMenuItem = new NativeMenuItem("msg");//生成OPEN菜单项 var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem("Exit");//同理 openNativeMenuItem.addEventListener(Event.SELECT, undock); exitNativeMenuItem.addEventListener(Event.SELECT, closeApp);//添加EXIT菜单项事件 msgNativeMenuItem.addEventListener(Event.SELECT,infos); menu.addItem(openNativeMenuItem); menu.addItem(msgNativeMenuItem); 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(); } public function infos(parentWin:NativeWindow,evt:Event):void{ var popMsg:PopMsg=new PopMsg(); popMsg.systemChrome=NativeWindowSystemChrome.NONE; popMsg.transparent=true; popMsg.showTitleBar=false; popMsg.showStatusBar=false; popMsg.setParent(parentWin); popMsg.open(); }
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication name="main" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" showFlexChrome="false" alwaysInFront="true" width="314" height="460" creationComplete="initApplication()" title="nofeng'win"> <mx:Script source="Systary.as"/> <mx:Script> <!--[CDATA[ import mx.controls.Alert; import mx.events.CloseEvent; //初始化Application里调用此方法,完成上面的第一步: public function initApplication():void{ initSystary(); bgImage.addEventListener(MouseEvent.MOUSE_DOWN, onStartMove); this.addEventListener(Event.CLOSING,closingApplication);//设置关闭体的事件 } //窗口最小化、关闭、拖动函数 public function minimizeWindow():void{ this.stage.nativeWindow.minimize(); } public function closeWindow(event:Event):void{ closingApplication(event); } public function onStartMove(event:MouseEvent):void{ this.stage.nativeWindow.startMove(); } ]]--> </mx:Script> <mx:Image x="0" y="0" source="images/airi_login.png" id="bgImage"/> <mx:Label x="133.5" y="80" text="Minimize"/> <mx:Button x="133.5" y="127" label="Button" click="infos(this.stage.nativeWindow,event)"/> <mx:Image x="274" y="23" source="images/windx_r1_c3.png" click="closeWindow(event)"/> <mx:Image x="253" y="23" source="images/windx_r1_c1.png" click="dock()"/> </mx:WindowedApplication>