zoukankan      html  css  js  c++  java
  • FLEX AIR添加系统托盘图标步骤

    AIR也像其它桌面应用程序一样,可以为其添加系统托盘图标。
    网上此类文章较多,这里简要说明一下,并列出步骤,以及关键代码

    简要说明
    1.针对托盘图标的操作即对当前AIR应用的nativeApplication.icon属性的相关操作,例如bitmaps,menu属性
    2.对于Windows和Mac系统,nativeApplication.icon的实例对象是不一样的,Windows返回的是SystemTrayIcon对象,而Mac(苹果系统)返回的是DockIcon对象(这里以Windows系统为例)
    3.添加图标到系统托盘,只需要设置当前AIR应用的nativeApplication.icon.bitmaps属性,就可以在系统托盘看到图标,但是这时还没有任何事件响应,需要进一步处理
    4.添加系统托盘的左键单击事件,这种情况一般就是恢复窗口到正常状态
    为SystemTrayIcon添加MouseEvent.CLICK事件
    5.添加系统托盘图标的右键事件,这里一般是个菜单列表,例如打开、退出等。
    需要设置SystemTrayIcon的menu属性,这里需要说明的是
    6.nativeWindow.visible控制了AIR应用在任务栏上(不是系统托盘)的图标显示

    添加系统托盘图标步骤
    1.最小化事件时添加创建系统托盘图标,可直接添加到一个按钮的CLICK事件来测试
    //最小化到系统托盘处理
    private function dockHandler():void{
        this.nativeWindow.visible = false;
        //添加任务栏图标
        addSysTrayIcon();
    }

    [Embed(source='assets/AIRApp_16.png')]
    private var icon16:Class;
    private function addSysTrayIcon():void{
        //icon16是一个图片文件,大小为16*16
        this.nativeApplication.icon.bitmaps = [new icon16()];
        if(NativeApplication.supportsSystemTrayIcon){
            var sti:SystemTrayIcon = SystemTrayIcon(this.nativeApplication.icon);
            //创建菜单列表
            sti.menu = createSysTrayMenu();
            //单击系统托盘图标时恢复窗口
            sti.addEventListener(MouseEvent.CLICK,restoreFromSysTrayHandler);
        }
    }

    2.创建系统托盘图标上下文菜单
    private function createSysTrayMenu():NativeMenu{
        var menu:NativeMenu = new NativeMenu();
        var labels:Array = ["打开","","退出程序"];
        var names:Array = ["mnuOpen","mnuSep1","mnuExit"];
        for (var i:int = 0;i<labels.length;i++){
            //如果标签为空的话,就认为是分隔符
            var menuItem:NativeMenuItem = new NativeMenuItem( labels[i],labels[i]=="");
            menuItem.name = names[i];
            menuItem.addEventListener(Event.SELECT,sysTrayMenuHandler );//菜单处理事件
            menu.addItem( menuItem );               
        }

        return menu;
    }

    3.添加系统托盘菜单事件,根据菜单名称来处理
    private function sysTrayMenuHandler(event:Event):void{
        switch(event.target.name){
            case "mnuOpen"://打开菜单
                undockHandler();
                break;
            case "mnuExit"://退出菜单
                exitHandler();
                break;
        }

    }

    4.从系统托盘恢复到任务栏
    private function undockHandler():void{
        this.nativeWindow.visible = true;
        this.nativeApplication.icon.bitmaps = [];
        //窗口提到最前面
        this.nativeWindow.orderToFront();
        //激活当前窗口
        this.activate();
    }

    5.退出程序的菜单事件
    private function exitHandler():void{
        this.exit();
    }

    以上为添加AIR图标的一些关键之处,仅供参考
  • 相关阅读:
    SHA1 VS RSA: what's the difference between them?
    TLS Security
    TLS Handshake Protocol
    Building Cython code
    Getting started with JupyterLab
    Installing Cython
    【转贴】libcrypto.so.10丢失导致sshd无法运行解决方案
    [Typescript] Function Overloads
    [Typescript] Function Generics
    [Typescript] Discriminated (Tagged) Unions
  • 原文地址:https://www.cnblogs.com/liongis/p/1802171.html
Copyright © 2011-2022 走看看