zoukankan      html  css  js  c++  java
  • AIR程序生成系统托盘

    AIR程序生成系统托盘 及 在程序最小化的时候在电脑右下角有个子定义的图标,如果对其加入事件,还可以有打开和退出的效果 在你的应用主程序的init方法中调用createSystemTray就可以了
    public function createSystemTray():void
    {
     var loader:Loader=new Loader();
     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, prepareForSystray); //这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制   
     loader.load(new URLRequest("http://gamespics.com/wp-content/uploads/2011/03/cd.jpg")); //这里先要加载托盘图标的小图片   http://gamespics.com/wp-content/uploads/2011/03/cd.jpg
     this.addEventListener(Event.CLOSING, closingApplication); //设置关闭体的事件
      
    }
    //public function handleMenuClick(event:Event):void
    //{
    // mx.controls.Alert.show("ok");
    //}
    //关闭窗体的事件 
    public function closingApplication(event:Event):void
    {
     event.preventDefault(); //阻止默认的事件   
     Alert.yesLabel="关闭";
     Alert.noLabel="最小化";
     Alert.show("关闭 OR 最小化?", "", 3, this, alertCloseHandler); //弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章.   
    }
    //根据用户的选择来判断做什么,这里选择是就是关闭,选择否(Mini)就是最小化到托盘. 
    private function alertCloseHandler(event:CloseEvent):void
    {
     if (event.detail == Alert.YES)
     {
      closeApp(event);
     }
     else
     {
      dock(); //最小化到托盘 
     }
    }
    //生成托盘 
    public function prepareForSystray(event:Event):void
    {
     dockImage=event.target.content.bitmapData;
     if (NativeApplication.supportsSystemTrayIcon)
     {
      setSystemTrayProperties(); //设置托盘菜单的事件 
      SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu(); //生成托盘菜单   
     }
    }
    public function createSystrayRootMenu():NativeMenu
    {
     var menu:NativeMenu=new NativeMenu();
     var openNativeMenuItem:NativeMenuItem=new NativeMenuItem("打开"); //生成OPEN菜单项 
     var exitNativeMenuItem:NativeMenuItem=new NativeMenuItem("退出"); //同理 
     openNativeMenuItem.addEventListener(Event.SELECT, undock);
     exitNativeMenuItem.addEventListener(Event.SELECT, closeApp); //添加EXIT菜单项事件 
     menu.addItem(openNativeMenuItem);
     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();
    }
    
  • 相关阅读:
    30个Python常用极简代码,拿走就用
    如果只写一行代码能实现什么?看完我彻底服了
    面试官问我:用了HTTPS就安全了吗?用了HTTPS会被抓包吗?我竟然回答不上来......
    程序员常见的口头禅
    没有心仪的offer,要不要找一个工作先凑合?
    微信新出“拍了拍”功能!
    UVa 340 Master-Mind Hints
    UVa 575 Skew Binary 歪斜二进制
    UVa 10250 The Other Two Trees
    UVa 10106 Product
  • 原文地址:https://www.cnblogs.com/AS30/p/3113249.html
Copyright © 2011-2022 走看看