构建一个没有任何窗口(即只存在于系统托盘/dock中)的Adobe AIR应用程序的最佳方式是什么?我注意到Flash Builder中默认的基本标签是<s:WindowedApplication>,这似乎意味着会有一个窗口。
我应该只使用<s:WindowedApplication>并调用window.hide()吗?我看到了另一个基类<s:Application>,但我感觉更多的是用于在浏览器中运行的文件。似乎使用window.hide()会在应用程序启动时短暂地闪烁一个窗口,这可能会让用户感到困惑。然而,理想情况下,我也希望保留应用程序在需要时打开窗口的能力,或者也可以通过更新将应用程序从仅限托盘更改为窗口。
发布于 2010-10-04 12:32:32
您需要编辑app-config文件以启用透明chrome和visible = false。然后,您需要将WindowedApplication标记更改为并应用您的自定义皮肤。您需要为close等添加控制按钮,因为该功能在web-app中不存在(因为您已经更改了标签)。此外,您还需要添加拖动功能。如果你想让你的应用程序可调整大小,你也需要手动添加。
发布于 2011-07-08 10:07:44
在清单(-app.xml)文件中,将systemChrome设置为none并透明为true。visible属性是无关紧要的,而且默认值是false,所以忽略它。
你必须调整它,导入任何缺少的类,等等……您也可以将其作为mxml组件来执行,只需在根标记上将visible和enabled设置为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();
}
}}
https://stackoverflow.com/questions/3847634
复制相似问题