<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="initApplication()"
close="closingApplication(event)">
<mx:Script>
<![CDATA[
import mx.events.CloseEvent;
import mx.controls.Alert;
private var dockImage:BitmapData;
public function initApplication():void{
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray);//这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制
try
{
loader.load(new URLRequest("assets/images/i_servicearea.png"));//这里先要加载托盘图标的小图片
}catch(e:Error){
Alert.show(e.message);
}
this.addEventListener(Event.CLOSING,closingApplication);//设置关闭体的事件
}
//关闭窗体的事件
public function closingApplication(event:Event):void{
event.preventDefault();//阻止默认的事件
Alert.yesLabel="Close";
Alert.noLabel="Mini";
Alert.show("Close or Minimize?", "Close?", 3, this, alertCloseHandler);//弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章.
}
//根据用户的选择来判断做什么,这里选择是就是关闭,选择否(Mini)就是最小化到托盘.
private function alertCloseHandler(event:CloseEvent):void{
if(event.detail==Alert.YES){
closeApp(event);
}else{
dock();//最小化到托盘
}
}
//生成托盘
public function prepareForSystray(event:Event):void{
dockImage=event.target.content.bitmapData;
if(NativeApplication.supportsSystemTrayIcon){
setSystemTrayProperties();//设置托盘菜单的事件
SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu();//生成托盘菜单
}
}
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);
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 {
stage.nativeWindow.visible = false; //设置本地程序窗体不可见
NativeApplication.nativeApplication.icon.bitmaps = [dockImage];//设置托盘的图标
}
//激活程序窗体
public function undock(evt:Event):void {
stage.nativeWindow.visible = true;//设置本地程序窗体可见
stage.nativeWindow.orderToFront();//设置本地程序窗体到最前端
NativeApplication.nativeApplication .icon.bitmaps = [];//将托盘图标清空
}
//关闭程序窗体
private function closeApp(evt:Event):void {
stage.nativeWindow.close();
}
]]>
</mx:Script>
<mx:HDividedBox height="100%" width="100%">
<mx:FileSystemTree id="tree"
width="200" height="100%"
directory="{new flash.filesystem.File('C:\\')}"
enumerationMode="directoriesOnly"
change="dataGrid.directory = File(tree.selectedItem);"/>
<mx:FileSystemDataGrid id="dataGrid"
width="100%" height="100%"
directory="{new flash.filesystem.File('C:\\')}"/>
</mx:HDividedBox>
</mx:WindowedApplication>
分享到:
相关推荐
在本文中,我们将深入探讨Flex4和Adobe Integrated Runtime (AIR)如何结合,实现自定义窗口功能,包括窗口最小化到托盘以及在后台运行的能力。 Flex4是ActionScript 3.0上的一个开发框架,它提供了丰富的组件库和...
以上代码展示了如何使用Flex 3和Adobe AIR API实现将Flex3Air应用最小化到系统托盘的功能。这只是一个基础示例,实际应用可能需要更复杂的逻辑,例如处理用户自定义设置、多语言支持以及错误处理等。完成这些功能后...
- 了解如何在Flex中组织MXML和ActionScript代码,以及如何将它们与AIR API结合使用。 8. **测试与调试**: - 在开发过程中,使用模拟器和真机测试确保在不同操作系统上的兼容性和表现。 - 调试工具如Flash ...
在提供的`air_native_win_demo`文件中,很可能是包含了实现上述功能的示例代码。通过查看和学习这个示例,开发者可以更直观地理解如何在Flex中集成窗口托盘和全屏功能。实际应用中,可能还需要考虑跨平台兼容性、...
标题 "FLEX提高篇--------AIR应用程序的托盘及托盘菜单的制作" 指向的是一个关于Adobe Integrated Runtime (AIR)的高级教程,重点是如何在Flex应用中创建和使用系统托盘图标以及与之相关的托盘菜单。Flex是基于...
通过分析这些源代码,学习者可以了解如何实现上述的托盘图标和QQ提醒功能,对Flex编程有更深入的理解。 5. **工具**:标签中的“工具”可能指代开发者使用的一些Flex开发工具,如Flex Builder、IntelliJ IDEA等,...
在Air中,秒表应用可以拥有更多的功能,如最小化到托盘、添加系统快捷方式等。 总结一下,本项目中的"Flex计时器、秒表、Air做的"是一个使用Flex和Air编写的桌面应用程序,实现了基本的秒表功能,包括开始、暂停、...
不过,我们可以假设这篇博客文章可能包含了代码示例、步骤指南或者最佳实践,来教开发者如何在他们的AIR应用程序中集成系统托盘和Dock功能。 标签 "源码" 暗示了这个示例可能包含实际的编程代码,这将有助于开发者...
Adobe AIR允许开发者构建跨平台的桌面应用程序,结合了Flash和Flex的强大力量,提供了一种在桌面环境中运行富互联网应用(RIA)的方式。 首先,我们来看如何创建右键菜单。在Adobe AIR中,可以使用`NativeMenu`和`...
在Adobe AIR 1.5中,ActionScript 3.0的优化使得代码执行更快,用户体验更佳。 3. **RIA(Rich Internet Applications)** RIA代表富互联网应用程序,是指具有丰富用户界面和交互性的网络应用。Adobe AIR通过将RIA...
标题中的“基于Flex3的透明记事本源码”指的是一个使用Adobe Flex 3框架开发的文本编辑器应用,该应用具有独特的透明效果和系统托盘功能。Flex3是Adobe Flex的一个版本,它是一个用于构建富互联网应用程序(RIA)的...
通过AIR SDK,开发者可以利用ActionScript 3.0进行编程,创建与本地操作系统深度集成的应用程序,比如访问文件系统、桌面通知、系统托盘等。"AirDater V1.00.air"这个文件很可能是AIR应用程序的打包文件,用户可以...
1. **跨平台兼容性**:Adobe AIR支持Windows、Mac OS和Linux操作系统,使得开发者能够编写一次代码,就能在多种平台上运行应用程序。 2. **桌面集成**:AIR应用可以拥有桌面级别的功能,如拖放操作、系统托盘图标、...
2. **开发工具**:书中将讲解如何使用Flex Builder、Flash Professional或Dreamweaver等Adobe工具创建AIR应用。开发者可以通过这些工具快速构建用户界面并实现交互逻辑。 3. **HTML、CSS和JavaScript的桌面应用**:...
7. **桌面集成**:讲解如何利用AIR的API实现与桌面系统的深度集成,如拖放功能、桌面通知、系统托盘图标等。 8. **安全性与权限**:讨论AIR应用的安全模型,包括沙箱限制、用户权限请求以及如何处理安全问题。 9. ...
【标题】"airi_login" 是一个基于Adobe Flex技术的应用程序示例,专注于实现桌面托盘图标集成以及具有透明背景和不规则形状窗口的设计。Flex是Adobe开发的一个用于构建富互联网应用程序(RIA)的框架,它允许开发者...
1. **创建AIR项目**:使用Adobe Flex Builder或Flash Builder等IDE,设置一个新的Adobe AIR项目,配置XML描述文件(.airapp),定义应用的基本信息和依赖库。 2. **Ajax集成**:讲解如何在AIR应用中集成Ajax,创建...