示例代码
<?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" creationComplete="windowedapplication1_creationCompleteHandler(event)">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import flashx.textLayout.elements.Configuration;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.events.FlexEvent;
import spark.components.Window;
private var icon:BitmapData = null;
private var w:Window = new Window();
protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
{
w.title = "通知";
initApplication();
}
//====================================系统关闭和托盘小图标处理=================
//系统小图标
private var dockImage:BitmapData;
//初始化Application里调用此方法,完成上面的第一步:
public function initApplication():void{
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray);//这里就是完成第一步的任务项,这个prepareForSystray就是对托盘的生在和菜单的控制
//var file:File = new File("com/xlcpIcon.png");
//loader.loadBytes(file.data);
loader.load(new URLRequest("com/xlcpIcon.png"));//这里先要加载托盘图标的小图片
this.addEventListener(Event.CLOSING,closingApplication);//设置关闭体的事件
}
//关闭窗体的事件
public function closingApplication(event:Event):void{
event.preventDefault();//阻止默认的事件
Alert.yesLabel="退出";
Alert.noLabel="最小化";
Alert.show("退出应用程序或者最小化窗口到系统小图标?", "系统提示", Alert.YES|Alert.NO|Alert.CANCEL, this, alertCloseHandler);//弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章.
Alert.yesLabel="是";
Alert.noLabel="否";
}
//根据用户的选择来判断做什么,这里选择是就是关闭,选择否(Mini)就是最小化到托盘.
private function alertCloseHandler(event:CloseEvent):void{
if(event.detail==Alert.YES){
closeApp(event);
}else if(event.detail==Alert.NO){
dock(true);//最小化到托盘
}
}
//生成托盘
public function prepareForSystray(event:Event):void{
dockImage=event.target.content.bitmapData;
if(NativeApplication.supportsSystemTrayIcon){
setSystemTrayProperties();//设置托盘菜单的事件
SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu();//生成托盘菜单
}
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 ="xinton";
SystemTrayIcon(NativeApplication.nativeApplication .icon).addEventListener(MouseEvent.CLICK, undock);
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(hidden:Boolean = false):void {
if(hidden){
stage.nativeWindow.visible = false; //设置本地程序窗体不可见
}
NativeApplication.nativeApplication.icon.bitmaps = [dockImage];//设置托盘的图标
}
//激活程序窗体
public function undock(evt:Event):void {
createSub();
//stage.nativeWindow.visible = true;//设置本地程序窗体可见
//stage.nativeWindow.orderToFront();//设置本地程序窗体到最前端
//NativeApplication.nativeApplication .icon.bitmaps = [];//将托盘图标清空
}
//关闭程序窗体
private function closeApp(evt:Event):void {
stage.nativeWindow.close();
}
private function createSub():void{
var opt:NativeWindowInitOptions = new NativeWindowInitOptions();
var window:NativeWindow = new NativeWindow(opt);
trace(Capabilities.screenResolutionX);
trace(Capabilities.screenResolutionY);
//window.bounds = new Rectangle(Capabilities.screenResolutionX - this.stage.nativeWindow.bounds.width, 0, nativeWindow.bounds.width, nativeWindow.bounds.height);
window.title = "代码创建空白子窗体";
window.width = 300;
window.height = 200;
window.x = Capabilities.screenResolutionX - window.width;
window.y = Capabilities.screenResolutionY - window.height;
window.activate();
}
]]>
</fx:Script>
</s:WindowedApplication>
分享到:
相关推荐
总的来说,Flex4 AIR自定义窗口的实现涉及到对Adobe AIR API的深入理解和熟练使用,包括窗口管理、系统集成以及事件处理。通过这样的技术,开发者可以为用户提供更加个性化和功能丰富的桌面体验。
以上代码展示了如何使用Flex 3和Adobe AIR API实现将Flex3Air应用最小化到系统托盘的功能。这只是一个基础示例,实际应用可能需要更复杂的逻辑,例如处理用户自定义设置、多语言支持以及错误处理等。完成这些功能后...
- 使用Flex的Skinning机制,你可以自定义组件外观,比如系统托盘图标的样式。 - `SystemTrayIcon`组件是AIR特有的,用于在系统托盘区域显示应用图标。 2. **事件监听**: - 当有新消息到达时,你需要监听相应的...
标题 "FLEX提高篇--------AIR应用程序的托盘及托盘菜单的制作" 指向的是一个关于Adobe Integrated Runtime (AIR)的高级教程,重点是如何在Flex应用中创建和使用系统托盘图标以及与之相关的托盘菜单。Flex是基于...
标题提到的“Flex的RIA应用程序托盘和QQ提醒功能”是指使用Flex技术构建的应用程序可能具备的两种特性:系统托盘图标和类似QQ的即时消息提醒。 1. **系统托盘图标**:在桌面应用中,系统托盘图标允许用户将应用程序...
在IT行业中,Flex是一种基于ActionScript 3.0和Flash Player或者Adobe AIR运行时环境的开源框架,主要用于构建富互联网应用程序(RIA)。本篇将详细讲解如何在Flex中实现窗口托盘和全屏功能。 首先,让我们关注...
4. 为托盘图标添加右键菜单,如“退出”和“打开”等选项。 5. 为菜单项添加相应的事件监听器。 6. 完成以上步骤后,你的应用程序就能实现从窗口最小化到托盘,同时托盘图标具有可操作的右键菜单。 例如,你可能...
AIR应用程序可以与用户的桌面环境深度集成,比如创建快捷方式、拖放操作、系统托盘图标等功能,提高了用户体验。 10. **错误处理和调试** Adobe AIR 1.5提供了强大的错误处理机制和调试工具,帮助开发者定位并...
4. **菜单项**:在某些系统中,系统托盘图标可能附带一个下拉菜单,提供额外的操作选项。AIR API允许开发者创建和管理这样的菜单。 5. **跨平台兼容性**:AIR支持多种操作系统,因此示例可能展示了如何确保代码在...
2. **桌面集成**:AIR应用可以拥有桌面级别的功能,如拖放操作、系统托盘图标、本地文件访问和离线工作。 3. **丰富的用户界面**:利用ActionScript和Flash的图形能力,开发者可以创建具有丰富媒体和交互性的应用...
在Flex中,可以使用NativeWindow API来实现这个功能,通过监听窗口状态改变的事件,当窗口被最小化时,将其图标移至系统托盘,并保持其可操作性。 4. **打开和保存文件**:作为一款记事本应用,必须具备读写文件的...
7. **桌面集成**:讲解如何利用AIR的API实现与桌面系统的深度集成,如拖放功能、桌面通知、系统托盘图标等。 8. **安全性与权限**:讨论AIR应用的安全模型,包括沙箱限制、用户权限请求以及如何处理安全问题。 9. ...
【标题】"airi_login" 是一个基于Adobe Flex技术的应用程序示例,专注于实现桌面托盘图标集成以及具有透明背景和不规则形状窗口的设计。Flex是Adobe开发的一个用于构建富互联网应用程序(RIA)的框架,它允许开发者...
创建系统托盘图标 第二十四章. FlexUnit单元测试(742) 24.1节. 创建应用FlexUnit框架的应用程序 24.2节. 运行FlexUnit单元测试 24.3节. 创建FlexUnit测试用例 24.4节. 添加测试用例到测试集合 24.5节. 在测试前后...
6. **桌面集成**:学习如何利用AIR API实现桌面特定的功能,如拖放操作、桌面快捷方式或系统托盘图标。 7. **调试和测试**:分享调试AIR应用的技巧,包括模拟器和设备的使用,以及如何解决常见的运行时错误。 8. *...
AIR允许Flex应用运行在桌面环境中,提供与本地系统更深入的交互,例如访问文件系统、桌面通知和系统托盘图标等。 9. **性能优化**:Flex 3.0在性能方面进行了优化,能够处理大量数据和复杂特效,同时保持流畅的用户...