无窗口(非无框)Adobe AIR应用程序

时间:2010-10-02 21:38:28

标签: air flash-builder

构建没有任何窗口的Adobe AIR应用程序(即仅存在于系统托盘/扩展坞中)的最佳方法是什么?我注意到Flash Builder中的默认基本标记是<s:WindowedApplication>,这似乎意味着会有一个窗口。

我应该使用<s:WindowedApplication>并致电window.hide()吗?我看到还有另一个基类<s:Application>,但我对这个在浏览器中运行的文件更有意义。似乎使用window.hide()会在应用程序启动时短暂闪烁一个窗口,这可能会使用户感到困惑。但是,我还希望能够让应用程序在以后需要时打开一个窗口,或者将应用程序从仅托盘更改为窗口更新。

2 个答案:

答案 0 :(得分:1)

您需要编辑app-config文件以启用透明chrome和visible = false。然后,您需要将WindowedApplication标记更改为并自定义您的自定义外观。您需要添加用于关闭等的控制按钮,因为该功能在Web应用程序中不存在(因为您已更改了标记)。您还需要添加拖动功能。如果你想让你的应用程序重新调整大小,你也需要手动添加它。

答案 1 :(得分:0)

在manifest(-app.xml)文件中,将systemChrome设置为none,将透明设置为true。可见属性是无关紧要的,默认为false,所以忽略它。

你将不得不调整它,导入任何缺少的类等等...你也可以将其作为mxml组件,并在root标签上设置visible并启用为false。使用所需的图标填充trayImages数组。

P

ackage{

import spark.components.WindowedApplication;

public class HiddenApplication extends WindowedApplication{


public function HiddenApplication(){
     super();
     enabled=false;
     visible=false;
var trayImages:Array;
    if(NativeApplication.supportsDockIcon||NativeApplication.supportsSystemTrayIcon){
                NativeApplication.nativeApplication.activate();
                var sep:NativeMenuItem = new NativeMenuItem(null,true);
                var exitMenu:NativeMenuItem = new NativeMenuItem('Exit',false);
                exitMenu.addEventListener(Event.SELECT,shutdown);
                var updateMenu:NativeMenuItem = new NativeMenuItem('Check for Updates',false);
                updateMenu.addEventListener(Event.SELECT,upDcheck);
                var prefsMenu:NativeMenuItem = new NativeMenuItem('Preferences',false);
                prefsMenu.addEventListener(Event.SELECT,Controller.showSettings);
                NativeApplication.nativeApplication.icon.addEventListener(ScreenMouseEvent.CLICK,showToolBar);
                    if(NativeApplication.supportsSystemTrayIcon){
                        trayIcon = SystemTrayIcon(NativeApplication.nativeApplication.icon);
                        setTrayIcons();
                        trayIcon.tooltip = "Some random tooltip text";
                        trayIcon.menu = new NativeMenu();
                        trayIcon.menu.addItem(prefsMenu);
                        trayIcon.menu.addItem(sep);
                        trayIcon.menu.addItem(updateMenu);
                        trayIcon.menu.addItem(exitMenu);
                    }
                    else{
                        dockIcon = DockIcon(NativeApplication.nativeApplication.icon);
                        setTrayIcons();
                        dockIcon.menu = new NativeMenu();
                        dockIcon.menu.addItem(prefsMenu);
                        dockIcon.menu.addItem(sep);
                        dockIcon.menu.addItem(updateMenu);
                        dockIcon.menu.addItem(exitMenu);
                    }
            }
            function setTrayIcons(n:Number=0):void{
                if(showTrayIcon&&(trayIcon||dockIcon)){
                    Controller.debug('Updating tray icon');
                    if(NativeApplication.supportsSystemTrayIcon){
                        trayIcon.bitmaps = trayImages;
                    }
                    else if(NativeApplication.supportsDockIcon){
                        dockIcon.bitmaps = trayImages;
                    }
                }
                else if(trayIcon||dockIcon) trayIcon.bitmaps = new Array(); 

        }
}

}