<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
backgroundAlpha="0.5" backgroundColor="#727070"
width="245" height="505" creationComplete="initSystary()"
showStatusBar="false" usePreloader="false"
mouseDown="this.nativeWindow.startMove()">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
mx|Alert {
titleStyleName: "alertTitle";
messageStyleName: "alertMessage";
button-style-name:"alertButtons";
borderColor: #831201;
borderAlpha: 0.5;
backgroundColor: #cccccc;
backgroundAlpha: 0.5;
cornerRadius:5;
headerHeight:0;
}
.alertTitle {
letterSpacing: 0;
fontSize: 14;
color: #000000;
fontFamily: "_sans";
}
.alertMessage {
letterSpacing: 0;
fontSize: 12;
fontWeight: bold;
color: #000000;
fontFamily: "_sans";
}
.alertButtons{
cornerRadius:5;
fillAlphas:0.0,0.0,0.0,0.0;
fillColors:#aaaaaa, #aaaaaa, #aaaaaa, #aaaaaa;
color:#000000;
textRollOverColor:#FFFFFF;
borderColor:#862e1d;
themeColor:#862e1d;
fontFamily:Arial;
fontSize:12; fontWeight:bold;
}
mx|ToolTip{
backgroundAlpha: 0.5;
cornerRadius: 6;
backgroundColor: #999999;
color: #0b333c;
fontSize: 12;
fontWeight: bold;
}
</fx:Style>
<fx:Script>
<![CDATA[
import flash.events.Event;
import mx.controls.Alert;
import mx.events.CloseEvent;
private var dockImage:BitmapData;
//初始化
public function initSystary():void{
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray);//这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制
loader.load(new URLRequest("assets/icon_16.png"));//这里先要加载托盘图标的小图片
}
//生成托盘
public function prepareForSystray(event:Event):void{
dockImage=event.target.content.bitmapData;
if(NativeApplication.supportsSystemTrayIcon){
setSystemTrayProperties();//设置托盘菜单的事件
SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu();//生成托盘菜单
}
}
//关闭窗体的事件
public function closingApplication(event:Event):void{
event.preventDefault();//阻止默认的事件
Alert.yesLabel="关闭";
Alert.noLabel="最小化";
Alert.show("关闭 或者 最小化?", "", 3, this, alertCloseHandler);//弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章.
}
//根据用户的选择来判断做什么,这里选择是就是关闭,选择否(Mini)就是最小化到托盘.
private function alertCloseHandler(event:CloseEvent):void{
if(event.detail==Alert.YES){
closeApp(event);
}else{
dock();//最小化到托盘
}
}
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 = "迷你虾米";
SystemTrayIcon(NativeApplication.nativeApplication .icon).addEventListener(MouseEvent.CLICK, undock);
this.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 {
this.stage.nativeWindow.visible = false; //设置本地程序窗体不可见
NativeApplication.nativeApplication.icon.bitmaps = [dockImage];//设置托盘的图标
}
//激活程序窗体
public function undock(evt:Event):void {
this.stage.nativeWindow.visible = true;//设置本地程序窗体可见
this.stage.nativeWindow.orderToFront();//设置本地程序窗体到最前端
NativeApplication.nativeApplication .icon.bitmaps = [];//将托盘图标清空
}
//关闭程序窗体
private function closeApp(evt:Event):void {
this.stage.nativeWindow.close();
}
]]>
</fx:Script>
<mx:HTML left="5" right="5" top="20" bottom="5" borderVisible="false" dropShadowVisible="true">
<mx:htmlText><![CDATA[<embed src="http://www.xiami.com/widget/933399_3647936,92815,1769398935,1770041365,358220,2859781,1017664,3598821,2117684,1770465833,1769836929,1768925137,1769893096,1769880107,1769880770,1769872306,1769529110,1769865841,1769731118,1769863941,1769571068,1769833050,1769868710,1769832126,3430594,1769701067,1769802256,1769832129,1768983626,1769470092,1769642275,1769399774,3492156,1769845026,1769908306,1769227477,1769372162,1769292118,7336,3480144,1769899857,384840,1769000347,1769183201,3455559,3567313,3484274,1769472424,72256,1769472432,_235_480_5695c1_457cb4/multiPlayer.swf" type="application/x-shockwave-flash" width="235" height="480" wmode="opaque"></embed>]]></mx:htmlText>
</mx:HTML>
<mx:LinkButton right="0" top="0" width="25" height="20" label="X" cornerRadius="4"
fontWeight="bold" toolTip="关闭" click="closingApplication(event)"/>
<mx:LinkButton right="25" top="0" width="25" height="20" label="-" fontSize="16"
fontWeight="bold" toolTip="最小化" click="dock()"/>
</s:WindowedApplication>
分享到:
相关推荐
这段代码创建了一个新的系统托盘图标,设置了图标图像和提示文本。"assets/trayIcon.png"是图标文件的路径,需要替换为实际的资源路径。 然后,我们需要监听窗口的Resize事件,当用户尝试最小化窗口时,我们可以将...
- 使用Flex的Skinning机制,你可以自定义组件外观,比如系统托盘图标的样式。 - `SystemTrayIcon`组件是AIR特有的,用于在系统托盘区域显示应用图标。 2. **事件监听**: - 当有新消息到达时,你需要监听相应的...
标题 "FLEX提高篇--------AIR应用程序的托盘及托盘菜单的制作" 指向的是一个关于Adobe Integrated Runtime (AIR)的高级教程,重点是如何在Flex应用中创建和使用系统托盘图标以及与之相关的托盘菜单。Flex是基于...
标题提到的“Flex的RIA应用程序托盘和QQ提醒功能”是指使用Flex技术构建的应用程序可能具备的两种特性:系统托盘图标和类似QQ的即时消息提醒。 1. **系统托盘图标**:在桌面应用中,系统托盘图标允许用户将应用程序...
AIR提供了本地桌面功能,如访问文件系统、桌面集成和离线运行等,极大地拓宽了Flex应用的使用场景。 在Flex4 AIR应用中实现自定义窗口,首先需要理解`NativeWindow`类。这个类是所有AIR桌面窗口的基础,它提供了...
6. **生命周期管理**:应用程序需要正确处理何时显示和隐藏系统托盘图标,以及在应用程序关闭时如何清理资源。 7. **代码结构**:良好的代码组织和模块化对于理解和维护示例至关重要。 综上所述,"AIR System Tray...
在桌面应用程序中,窗口托盘通常指的是系统任务栏上的一个小图标,当用户最小化程序窗口时,程序会缩到托盘区,而不是完全关闭。这样可以保持应用程序在后台运行,同时释放屏幕空间。在Flex中,我们可以利用Adobe ...
AIR应用程序可以与用户的桌面环境深度集成,比如创建快捷方式、拖放操作、系统托盘图标等功能,提高了用户体验。 10. **错误处理和调试** Adobe AIR 1.5提供了强大的错误处理机制和调试工具,帮助开发者定位并...
总的来说,通过使用Adobe AIR提供的API,开发者可以轻松地为应用程序添加丰富的桌面特性,如右键菜单和系统托盘功能,从而提供更加用户友好的交互体验。在实际开发中,根据具体需求调整和扩展这些基础示例,可以使你...
2. **桌面集成**:AIR应用可以拥有桌面级别的功能,如拖放操作、系统托盘图标、本地文件访问和离线工作。 3. **丰富的用户界面**:利用ActionScript和Flash的图形能力,开发者可以创建具有丰富媒体和交互性的应用...
标题中的“基于Flex3的透明记事本源码”指的是一个使用Adobe Flex 3框架开发的文本编辑器应用,该应用具有独特的透明效果和系统托盘功能。Flex3是Adobe Flex的一个版本,它是一个用于构建富互联网应用程序(RIA)的...
【描述】中的内容表明,这个"airi_login"项目展示了如何在Flex应用中集成托盘图标功能,这通常用于在系统托盘区域显示应用图标,以便在不占用主屏幕空间的情况下提供快速访问或后台运行。同时,它还实现了透明背景,...
7. **桌面集成**:讲解如何利用AIR的API实现与桌面系统的深度集成,如拖放功能、桌面通知、系统托盘图标等。 8. **安全性与权限**:讨论AIR应用的安全模型,包括沙箱限制、用户权限请求以及如何处理安全问题。 9. ...
6. **桌面集成**:学习如何利用AIR API实现桌面特定的功能,如拖放操作、桌面快捷方式或系统托盘图标。 7. **调试和测试**:分享调试AIR应用的技巧,包括模拟器和设备的使用,以及如何解决常见的运行时错误。 8. *...
AIR允许Flex应用运行在桌面环境中,提供与本地系统更深入的交互,例如访问文件系统、桌面通知和系统托盘图标等。 9. **性能优化**:Flex 3.0在性能方面进行了优化,能够处理大量数据和复杂特效,同时保持流畅的用户...
创建系统托盘图标 第二十四章. FlexUnit单元测试(742) 24.1节. 创建应用FlexUnit框架的应用程序 24.2节. 运行FlexUnit单元测试 24.3节. 创建FlexUnit测试用例 24.4节. 添加测试用例到测试集合 24.5节. 在测试前后...