`
hacker47
  • 浏览: 340526 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

FLEX提高篇--------AIR应用程序的托盘及托盘菜单的制作

阅读更多

AIR  desktop Application应该说是ADOBE以及FLEX的一大亮点了,想毕对我这个文章标题感冒的朋友,肯定知道得比我多且深入,AIR是何物?以及一些简单的概念就没有必要让我在这里炒作了,因为工作需要,前不久为我的AIR程序制作了一个系统托盘,当程序被点击窗口右上角的X,阻止系统默认的关闭事件,执行我们自定义的事件,并完成其它任务,在本文,我是弹出一个关闭还是最小化到托盘的选择框,根据用户的选择做相应的事情.本文着重讲解如何将应用程序最小化到托盘,然后给托盘图标加右键菜单以及添加相应的事件,来激活应用程序窗体.小弟表达能力很烂,朋友们凑合着瞧瞧吧.欢迎对FLEX感兴趣的朋友(特别是做JAVA)加入我的FLEX群:52429840,一起学习.

 

先说说整个流程:

1.       初始化应用时改变系统默认情况下以系统X事件的处理.

2.       定义新处理逻辑(本文是弹出对话框)

3.       生成托盘图标并置于状态栏

4.       给托盘图标加上右键菜单(本文是exit,open两项)

5.       给菜单加上相应的事件

6.       大功告成

 

再说下几个主要的方法:

要说的我就写到注释里了,大家耐心地看下

 

 

private var dockImage:BitmapData;
    		
		//初始化Application里调用此方法,完成上面的第一步:
    		public function initApplication():void{
    			var loader:Loader=new Loader();
    			loader.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray);//这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制
    			loader.load(new URLRequest("assets/images/32.png"));//这里先要加载托盘图标的小图片
    			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");//生成OPEN菜单项
			var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem("Exit");//同理
			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 = "TurboSquid squidword";
			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();
		}

		

 

 

 

 

  • application.rar (1.8 KB)
  • 描述: 只是源码的一部分不能运行
  • 下载次数: 195
8
0
分享到:
评论
1 楼 bokelg 2008-07-06  
支持开源,支持博主

相关推荐

    Flex的RIA应用程序托盘和QQ提醒功能

    标题提到的“Flex的RIA应用程序托盘和QQ提醒功能”是指使用Flex技术构建的应用程序可能具备的两种特性:系统托盘图标和类似QQ的即时消息提醒。 1. **系统托盘图标**:在桌面应用中,系统托盘图标允许用户将应用程序...

    Flex3Air最小化到系统托盘

    "Flex3Air最小化到系统托盘"这个主题主要涉及的是如何在Flex3Air应用中实现窗口最小化功能,并将应用程序图标隐藏到操作系统的系统托盘区域,而不是传统的任务栏上。这一功能在很多桌面应用中都很常见,比如电子邮件...

    Flex4 Air 自定义窗口

    Flex4 AIR自定义窗口是一种高级的用户界面设计技术,它允许开发者创建出具有独特特性和交互体验的应用程序。在本文中,我们将深入探讨Flex4和Adobe Integrated Runtime (AIR)如何结合,实现自定义窗口功能,包括窗口...

    用Flex AIR 做一个类似QQ消息提示在系统托盘闪烁图标

    标题中的“用Flex AIR 做一个类似QQ消息提示在系统托盘闪烁图标”表明了这个项目是关于使用Adobe Flex和Adobe Integrated Runtime (AIR) 开发一个功能,该功能模仿了腾讯QQ的消息提示方式,即当有新消息时,系统托盘...

    flex 窗口托盘和全屏

    在IT行业中,Flex是一种基于ActionScript 3.0和Flash Player或者Adobe AIR运行时环境的开源框架,主要用于构建富互联网应用程序(RIA)。本篇将详细讲解如何在Flex中实现窗口托盘和全屏功能。 首先,让我们关注...

    AIR教程-AIR教程

    Adobe AIR允许开发者构建跨平台的桌面应用程序,结合了Flash和Flex的强大力量,提供了一种在桌面环境中运行富互联网应用(RIA)的方式。 首先,我们来看如何创建右键菜单。在Adobe AIR中,可以使用`NativeMenu`和`...

    AIR System Tray and Dock Example

    不过,我们可以假设这篇博客文章可能包含了代码示例、步骤指南或者最佳实践,来教开发者如何在他们的AIR应用程序中集成系统托盘和Dock功能。 标签 "源码" 暗示了这个示例可能包含实际的编程代码,这将有助于开发者...

    Flex计时器、秒表、Air做的

    Air的使用使得这个秒表应用能够脱离浏览器,作为一个独立的桌面程序运行,提高了用户体验。对于初学者来说,这样的项目可以帮助他们更好地理解Flex中的计时器和时间处理,同时了解如何利用Air进行桌面应用开发。

    Adobe AIR 1.5 中文帮助手册

    AIR应用程序可以与用户的桌面环境深度集成,比如创建快捷方式、拖放操作、系统托盘图标等功能,提高了用户体验。 10. **错误处理和调试** Adobe AIR 1.5提供了强大的错误处理机制和调试工具,帮助开发者定位并...

    Adobe AIR安装文件

    安装完成后,开发者就可以通过Adobe Flex或Flash Builder等工具,利用Adobe AIR SDK创建和打包自己的桌面应用程序。 Adobe AIR在早期被广泛应用于游戏开发、教育软件、生产力工具等领域,但由于移动设备的普及,其...

    基于Flex3的透明记事本源码

    标题中的“基于Flex3的透明记事本源码”指的是一个使用Adobe Flex 3框架开发的文本编辑器应用,该应用具有独特的透明效果和系统托盘功能。Flex3是Adobe Flex的一个版本,它是一个用于构建富互联网应用程序(RIA)的...

    Adobe AIR 经典案例2008 Adobe AIR Create Modify Reuse

    6. **桌面集成**:AIR应用程序可以与桌面环境深度集成,如拖放操作、系统托盘、通知等。书中的案例会展示如何利用这些功能提高用户体验。 7. **离线应用和网络状态管理**:Adobe AIR支持离线应用,即使在网络断开的...

    AIR时钟(含源码)

    通过AIR SDK,开发者可以利用ActionScript 3.0进行编程,创建与本地操作系统深度集成的应用程序,比如访问文件系统、桌面通知、系统托盘等。"AirDater V1.00.air"这个文件很可能是AIR应用程序的打包文件,用户可以...

    使用HTML和Ajax开发Adobe.AIR.1.5.rar

    5. **Air 应用程序生命周期**:解释AIR应用的创建、运行、暂停、恢复和关闭过程,以及如何管理这些状态。 6. **本地存储和访问**:介绍如何利用Adobe AIR API进行本地数据存储,如SQLite数据库、文件系统操作,以及...

    airi_login

    【标题】"airi_login" 是一个基于Adobe Flex技术的应用程序示例,专注于实现桌面托盘图标集成以及具有透明背景和不规则形状窗口的设计。Flex是Adobe开发的一个用于构建富互联网应用程序(RIA)的框架,它允许开发者...

    flex3的cookbook书籍完整版dpf(包含目录)

    编译和部署使用RSL的Flex应用程序 25.6节. 在Flex Builder调试中创建和监视表达式 25.7节. 在Flex Builder中安装Ant窗口 25.8节. 为自动通用任务创建一个Ant构建文件 25.9节. 使用mxmlc和Ant编译Flex应用程序 25.10...

Global site tag (gtag.js) - Google Analytics