首页 > 网站 > WEB开发 > 正文

23.17.创建系统托盘图标

2024-04-27 13:52:34
字体:
来源:转载
供稿:网友
23.17.1.问题
我想让应用程序运行在后台,不需要主界面。
23.17.2.解决办法
在<mx:WindowedApplication>根标签和描述文件里设置应用程序的可见性为false,使用DockIcon和SystemTrayIcon类,添加自定义程序图标。
23.17.3.讨论
是可以创建没有主界面的应用程序,且运行在后台。这些应用程序出现在系统托盘或停靠栏里。Mac OS X 和Windows操作系统都支持应用程序图标,只是规定有些差别。因此AIR 针对不同操作系统提供图标显示类。DockIcon类是运行在Mac OS X系统下而SystemTrayIcon类是在Windows下。要检测哪一个图标被操作系统所支持,你可以使用NativeApplication 类的supportsDockIcon 和supportsSystemTrayIcon属性。

DockIcon 和SystemTrayIcon 类都是继承自flash.desktop.InteractiveIcon 抽象基类。

NativeApplication实例的icon属性是指向操作系统支持的应用程序图标类引用。你可以赋值图形给icon的bitmaps属性。Bitmaps数组里的元素都是BitmapData对象,其大小是操作系统所规定的大小。如果bitmaps属性为空,则Mac OS X下默认的图标会被使用而Windows系统下不会显示图标在系统托盘上。

除了可以添加自定义应用程序图标外,你还可以添加当用户点击图标时显示的本地的上下文菜单。在上下文菜单上,可以监听选择项和运行相应的命令。下面的例子将运行在系统托盘或停靠栏上,并提供一个命令用于关闭程序:
+展开
-XML
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxmllayout="vertical"
visible="falsewindowComplete="completeHandler();">

<mx:Script>
<![CDATA[
[Embed(source='assets/AIRApp_16.png')]
private var icon16:Class;
[Embed(source='assets/AIRApp_32.png')]
private var icon32:Class;
[Embed(source='assets/AIRApp_48.png')]
private var icon48:Class;
[Embed(source='assets/AIRApp_128.png')]
private var icon128:Class;
private function completeHandler():void {
var shellMenu:NativeMenu = createShellMenu();
var icon:InteractiveIcon = NativeApplication.nativeApplication.icon;
if ( NativeApplication.supportsDockIcon ) {
( icon as DockIcon ).menu = shellMenu;
}
else
{
( icon as SystemTrayIcon ).menu = shellMenu;
( icon as SystemTrayIcon ).tooltip = "My App" ;
}
var bitmaps:Array = [new icon16(), new icon32(), new icon48(), new icon128()];
icon.bitmaps = bitmaps;
}
private function createShellMenu():NativeMenu {
var menu:NativeMenu = new NativeMenu();
var quitCmd:NativeMenuItem = new NativeMenuItem( "Quit");
quitCmd.addEventListener(Event.SELECT,quitHandler );
menu.addItem( quitCmd );
return menu;
}
private function quitHandler( evt:Event ):void {
NativeApplication.nativeApplication.exit();
}

]]>
</mx:Script>
</mx:WindowedApplication>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表