:::: 菜单 ::::

AIR应用程序最小化到托盘(Windows)实战代码分享

饭否1.7发布了,增加的最小化到系统托盘的功能部分代码分享:

  1. /**关闭&最小化到托盘按钮点击事件处理*/
  2.         public function clickWindowHandler(e:Event):void {
  3.             if (e.target == minBtn) {
  4.                 createIcon();
  5.                 stage.nativeWindow.visible=false;
  6.             }
  7.             if (e.target == closeBtn) {
  8.                 NativeApplication.nativeApplication.exit();
  9.             }
  10.         }
  11.         /**从后台再现窗体*/
  12.         public function reappear(e:ScreenMouseEvent=null):void{
  13.             stage.nativeWindow.visible=true;
  14.             removeIcon();
  15.         }
  16.         /**创建托盘图标*/
  17.         public function createIcon():void
  18.         {
  19.             NativeApplication.nativeApplication.autoExit = false;
  20.             var icon:Loader = new Loader();
  21.             var iconMenu:NativeMenu = new NativeMenu();
  22.             var exitCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("退出"));
  23.             exitCommand.addEventListener(Event.SELECT, function(event:Event):void 
  24.                 {
  25.                     NativeApplication.nativeApplication.icon.bitmaps = [];
  26.                     NativeApplication.nativeApplication.exit();
  27.                 }
  28.             );
  29.             if (NativeApplication.supportsSystemTrayIcon) 
  30.             {
  31.                 NativeApplication.nativeApplication.autoExit = false;
  32.                 icon.contentLoaderInfo.addEventListener(Event.COMPLETE, iconLoadComplete);
  33.                 icon.load(new URLRequest("resource/icons/i16.png"));
  34.                 var systray:SystemTrayIcon=NativeApplication.nativeApplication.icon as SystemTrayIcon;
  35.                 systray.tooltip = "饭否AIR客户端";
  36.                 systray.menu = iconMenu;
  37.                 systray.addEventListener(MouseEvent.CLICK,reappear);
  38.             }
  39.             if (NativeApplication.supportsDockIcon)
  40.             {
  41.                 icon.contentLoaderInfo.addEventListener(Event.COMPLETE,iconLoadComplete);
  42.                 icon.load(new URLRequest("resource/icons/i128.png"));
  43.                 var dock:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
  44.                 dock.menu = iconMenu;
  45.                 dock.addEventListener(MouseEvent.CLICK,reappear);//这种情况我没法测试 也不知道会不会有问题,所以先Alpha一下
  46.             }
  47.         }
  48.         /**移除托盘图标*/
  49.         public function removeIcon():void
  50.         {
  51.             NativeApplication.nativeApplication.icon.bitmaps = [];           
  52.         }
  53.         private function iconLoadComplete(event:Event):void
  54.         {
  55.             NativeApplication.nativeApplication.icon.bitmaps = [event.target.content.bitmapData];
  56.         }

延伸阅读