`

air系统托盘实现以及系统托盘菜单

    博客分类:
  • air
阅读更多

http://www.flashas.net/html/air/20090425/4132.html

var mainMenu:NativeMenu = new NativeMenu();
var minimizeMenu:NativeMenuItem = new NativeMenuItem("Minimize");
var maximizeMenu:NativeMenuItem = new NativeMenuItem("Maximize");
var sepMenu:NativeMenuItem = new NativeMenuItem("",true);
var restoreMenu:NativeMenuItem = new NativeMenuItem("Restore");
var closeMenu:NativeMenuItem = new NativeMenuItem("Close");
minimizeMenu.addEventListener(Event.Select, handleMenuClick);
maximizeMenu.addEventListener(Event.Select, handleMenuClick);
restoreMenu.addEventListener(Event.Select, handleMenuClick);
closeMenu.addEventListener(Event.Select, handleMenuClick);
mainMenu.addItem(minimizeMenu);
mainMenu.addItem(maximizeMenu);
mainMenu.addItem(sepMenu);
mainMenu.addItem(restoreMenu);
mainMenu.addItem(closeMenu);
this.contextMenu=mainMenu;

系统托盘:


var sysTray:SystemTrayIcon = 
   NativeApplication.nativeApplication.icon as SystemTrayIcon; 
   sysTray.tooltip = "测试tray";
   //
   sysTray.menu = this.contextMenu;
   sysTray.addEventListener(MouseEvent.CLICK,trayClick);

 

如何将应用程序最小化到托盘,然后给托盘图标加右键菜单以及添加相应的事件,来激活应用程序窗体.

整个流程:

1.       初始化应用时改变系统默认情况下以系统X事件的处理.

2.       定义新处理逻辑(本文是弹出对话框)

3.       生成托盘图标并置于状态栏

4.       给托盘图标加上右键菜单(本文是exit,和open两项)

5.       给菜单加上相应的事件

6.       大功告成

 

主要方法:

 

  1. private  var dockImage:BitmapData;   

  2.                

  3.          //初始化Application里调用此方法,完成上面的第一步:    

  4.              public  function initApplication(): void {   

  5.                 var loader:Loader= new  Loader();   

  6.                 loader.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray); //这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制    

  7.                 loader.load( new  URLRequest( "assets/images/32.png" )); //这里先要加载托盘图标的小图片    

  8.                  this .addEventListener(Event.CLOSING,closingApplication); //设置关闭体的事件    

  9.             }   

  10.                

  11.          //关闭窗体的事件    

  12.              public  function closingApplication(event:Event): void {   

  13.                 event.preventDefault(); //阻止默认的事件    

  14.                 Alert.yesLabel= "Close" ;   

  15.                 Alert.noLabel= "Mini" ;   

  16.                 Alert.show( "Close or Minimize?" "Close?" 3 this , alertCloseHandler); //弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章.    

  17.             }   

  18.          //根据用户的选择来判断做什么,这里选择是就是关闭,选择否(Mini)就是最小化到托盘.    

  19.          private  function alertCloseHandler(event:CloseEvent): void {   

  20.              if (event.detail==Alert.YES){   

  21.                 closeApp(event);   

  22.             } else {   

  23.                 dock(); //最小化到托盘    

  24.             }   

  25.         }   

  26.            

  27.      //生成托盘    

  28.          public  function prepareForSystray(event:Event): void {   

  29.             dockImage=event.target.content.bitmapData;   

  30.              if (NativeApplication.supportsSystemTrayIcon){   

  31.                 setSystemTrayProperties(); //设置托盘菜单的事件    

  32.                 SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu(); //生成托盘菜单    

  33.             }      

  34.         }   

  35.            

  36.          public  function createSystrayRootMenu():NativeMenu{   

  37.             var menu:NativeMenu =  new  NativeMenu();   

  38.             var openNativeMenuItem:NativeMenuItem =  new  NativeMenuItem( "Open" ); //生成OPEN菜单项    

  39.             var exitNativeMenuItem:NativeMenuItem =  new  NativeMenuItem( "Exit" ); //同理    

  40.             openNativeMenuItem.addEventListener(Event.SELECT, undock);   

  41.             exitNativeMenuItem.addEventListener(Event.SELECT, closeApp); //添加EXIT菜单项事件    

  42.             menu.addItem(openNativeMenuItem);   

  43.             menu.addItem( new  NativeMenuItem( "" , true )); //separator     

  44.             menu.addItem(exitNativeMenuItem); //将菜单项加入菜单    

  45.   

  46.              return  menu;   

  47.   

  48.         }   

  49.          //设置托盘图标的事件    

  50.          private  function setSystemTrayProperties(): void {   

  51.             SystemTrayIcon(NativeApplication.nativeApplication .icon).tooltip =  "TurboSquid squidword" ;   

  52.             SystemTrayIcon(NativeApplication.nativeApplication .icon).addEventListener(MouseEvent.CLICK, undock);   

  53.             stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, nwMinimized);    

  54.         }   

  55.            

  56. //最小化窗体    

  57.          private  function nwMinimized(displayStateEvent:NativeWindowDisplayStateEvent): void  {   

  58.              if (displayStateEvent.afterDisplayState == NativeWindowDisplayState.MINIMIZED) {   

  59.                 displayStateEvent.preventDefault(); //阻止系统默认的关闭窗体事件    

  60.                 dock(); //将程序放入托盘    

  61.             }   

  62.         }   

  63.   

  64.          //将本地应用程序放到托盘    

  65.          public  function dock(): void  {   

  66.             stage.nativeWindow.visible =  false //设置本地程序窗体不可见    

  67.             NativeApplication.nativeApplication.icon.bitmaps = [dockImage]; //设置托盘的图标    

  68.         }   

  69.            

  70.          //激活程序窗体    

  71.          public  function undock(evt:Event): void  {   

  72.         stage.nativeWindow.visible =  true ; //设置本地程序窗体可见    

  73.         stage.nativeWindow.orderToFront(); //设置本地程序窗体到最前端    

  74.         NativeApplication.nativeApplication .icon.bitmaps = [];将托盘图标清空   

  75.         }   

  76.            

  77.          //关闭程序窗体    

  78.          private  function closeApp(evt:Event): void  {   

  79.             stage.nativeWindow.close();   

  80.         }   

  81.  

分享到:
评论

相关推荐

    Flex3Air最小化到系统托盘

    "Flex3Air最小化到系统托盘"这个主题主要涉及的是如何在Flex3Air应用中实现窗口最小化功能,并将应用程序图标隐藏到操作系统的系统托盘区域,而不是传统的任务栏上。这一功能在很多桌面应用中都很常见,比如电子邮件...

    FLEX提高篇--------AIR应用程序的托盘及托盘菜单的制作

    在本文中,我们将深入探讨如何使用Adobe Flex和Adobe AIR技术来创建应用程序的系统托盘以及托盘菜单。Flex是一款强大的开发框架,用于构建富互联网应用(RIA),而AIR(Adobe Integrated Runtime)则允许这些Flex...

    AIR System Tray and Dock Example

    标题 "AIR System Tray and Dock Example" 提供了一个关键线索,表明我们要探讨的是关于Adobe Integrated Runtime (AIR)的应用程序,特别是如何在系统托盘或Dock区域实现功能。在计算机用户界面中,系统托盘通常位于...

    AIR教程-AIR教程

    在本文中,我们将深入探讨Adobe AIR(Adobe Integrated Runtime)教程中的关键知识点,特别是关于创建右键菜单和系统托盘(Tray)功能的实现方法。Adobe AIR允许开发者构建跨平台的桌面应用程序,结合了Flash和Flex...

    Flex4 Air 自定义窗口

    在本文中,我们将深入探讨Flex4和Adobe Integrated Runtime (AIR)如何结合,实现自定义窗口功能,包括窗口最小化到托盘以及在后台运行的能力。 Flex4是ActionScript 3.0上的一个开发框架,它提供了丰富的组件库和...

    AIR systemTrayIcon sample code

    在本文中,我们将深入探讨Adobe Integrated Runtime (AIR) 中的`SystemTrayIcon`功能,以及如何使用它来创建和管理应用程序的系统托盘图标。系统托盘图标是桌面应用程序中一个常见且实用的特性,它允许用户在任务栏...

    Flex的RIA应用程序托盘和QQ提醒功能

    1. **系统托盘图标**:在桌面应用中,系统托盘图标允许用户将应用程序最小化到任务栏的系统通知区域,以便在不使用时隐藏主界面,但仍保持应用程序运行。在Flex中,可以通过使用NativeApplication类的systemTray属性...

    flex 窗口托盘和全屏

    3. 监听事件:添加事件监听器以处理用户在托盘菜单上的选择。例如,当用户点击“退出”时,调用`NativeApplication.nativeApplication.exit()`方法结束应用;点击“还原”时,调用`stage.displayState = ...

    flash_AIR实例教程(中文版)

    - **概念**:Adobe AIR 支持创建带有窗口菜单栏、工具栏等功能的桌面应用程序。 - **示例**:创建一个具有最小化、最大化和关闭按钮的窗口。 #### 六、从库中加载位图 - **方法**:使用 `BitmapData` 或 `Bitmap` ...

    Visual C++编程技巧精选集 光盘

    125.如何在操作系统任务栏上添加托盘菜单 126.如何触发操作系统的“开始”菜单 127.如何隐藏IE浏览器的右键菜单组 第4章 工具栏和状态栏 128.如何获取工具栏中的图标资源 129.如何在工具栏上设置背景图像 130.如何...

    惠普M377DW说明书.pdf

    打印机后视图主要包含出纸托盘、电源接口、网络端口以及可能的USB端口,这些接口用于连接电脑或其他设备,进行数据传输和打印任务的执行。 控制面板视图通常包括主页屏幕布局,展示各种功能快捷方式,如打印、扫描...

    flex3的cookbook书籍完整版dpf(包含目录)

    创建系统托盘图标 第二十四章. FlexUnit单元测试(742) 24.1节. 创建应用FlexUnit框架的应用程序 24.2节. 运行FlexUnit单元测试 24.3节. 创建FlexUnit测试用例 24.4节. 添加测试用例到测试集合 24.5节. 在测试前后...

Global site tag (gtag.js) - Google Analytics