Приложение Adobe AIR без окон (без хрома) - PullRequest
0 голосов
/ 03 октября 2010

Как лучше всего создать приложение Adobe AIR, в котором нет окон (т. Е. Существует только в системном трее / док-станции)? Я заметил, что базовый тег по умолчанию в Flash Builder - <s:WindowedApplication>, что, по-видимому, подразумевает появление окна.

Должен ли я просто использовать <s:WindowedApplication> и позвонить window.hide()? Я видел, что есть еще один базовый класс, <s:Application>, но я понял, что это больше для файлов, которые запускаются в браузере. Похоже, что использование window.hide() кратковременно высветит окно при запуске приложения, что может запутать пользователей. Тем не менее, я также хотел бы сохранить возможность открывать окно приложения позже, если это необходимо, или также изменять приложение с «только в трее» на оконное через обновление.

Ответы [ 2 ]

1 голос
/ 04 октября 2010

Вам нужно отредактировать файл app-config, чтобы включить прозрачный хром и visible = false.Затем вам нужно изменить тег WindowedApplication и применить свой собственный скин.Вам необходимо добавить кнопки управления для закрытия и т. Д., Поскольку эта функция отсутствует в веб-приложении (поскольку вы изменили тег).Также вам нужно добавить функциональность перетаскивания.Если вы хотите, чтобы ваше приложение было изменяемого размера, вам также нужно добавить это вручную.

0 голосов
/ 08 июля 2011

В вашем файле манифеста (-app.xml) установите для systemChrome значение none, а для прозрачного - значение true. Свойство visible не имеет значения, в любом случае значение по умолчанию равно false, поэтому игнорируйте его.

вам придется настроить это, импортировать все отсутствующие классы и т. Д. ... вы также можете сделать это как компонент mxml и просто установить значение visible и включить значение false в корневом теге. Заполните массив trayImages значками, которые вы хотите видеть в доке.

р

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(); 

        }
}

}

...