`
ljxyuer
  • 浏览: 16649 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Flex Air 应用 增加系统托盘图标

    博客分类:
  • Flex
阅读更多
<?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>
 
0
1
分享到:
评论

相关推荐

    Flex3Air最小化到系统托盘

    这段代码创建了一个新的系统托盘图标,设置了图标图像和提示文本。"assets/trayIcon.png"是图标文件的路径,需要替换为实际的资源路径。 然后,我们需要监听窗口的Resize事件,当用户尝试最小化窗口时,我们可以将...

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

    - 使用Flex的Skinning机制,你可以自定义组件外观,比如系统托盘图标的样式。 - `SystemTrayIcon`组件是AIR特有的,用于在系统托盘区域显示应用图标。 2. **事件监听**: - 当有新消息到达时,你需要监听相应的...

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

    标题 "FLEX提高篇--------AIR应用程序的托盘及托盘菜单的制作" 指向的是一个关于Adobe Integrated Runtime (AIR)的高级教程,重点是如何在Flex应用中创建和使用系统托盘图标以及与之相关的托盘菜单。Flex是基于...

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

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

    Flex4 Air 自定义窗口

    AIR提供了本地桌面功能,如访问文件系统、桌面集成和离线运行等,极大地拓宽了Flex应用的使用场景。 在Flex4 AIR应用中实现自定义窗口,首先需要理解`NativeWindow`类。这个类是所有AIR桌面窗口的基础,它提供了...

    AIR System Tray and Dock Example

    6. **生命周期管理**:应用程序需要正确处理何时显示和隐藏系统托盘图标,以及在应用程序关闭时如何清理资源。 7. **代码结构**:良好的代码组织和模块化对于理解和维护示例至关重要。 综上所述,"AIR System Tray...

    flex 窗口托盘和全屏

    在桌面应用程序中,窗口托盘通常指的是系统任务栏上的一个小图标,当用户最小化程序窗口时,程序会缩到托盘区,而不是完全关闭。这样可以保持应用程序在后台运行,同时释放屏幕空间。在Flex中,我们可以利用Adobe ...

    Adobe AIR 1.5 中文帮助手册

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

    AIR教程-AIR教程

    总的来说,通过使用Adobe AIR提供的API,开发者可以轻松地为应用程序添加丰富的桌面特性,如右键菜单和系统托盘功能,从而提供更加用户友好的交互体验。在实际开发中,根据具体需求调整和扩展这些基础示例,可以使你...

    Adobe AIR安装文件

    2. **桌面集成**:AIR应用可以拥有桌面级别的功能,如拖放操作、系统托盘图标、本地文件访问和离线工作。 3. **丰富的用户界面**:利用ActionScript和Flash的图形能力,开发者可以创建具有丰富媒体和交互性的应用...

    基于Flex3的透明记事本源码

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

    airi_login

    【描述】中的内容表明,这个"airi_login"项目展示了如何在Flex应用中集成托盘图标功能,这通常用于在系统托盘区域显示应用图标,以便在不占用主屏幕空间的情况下提供快速访问或后台运行。同时,它还实现了透明背景,...

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

    7. **桌面集成**:讲解如何利用AIR的API实现与桌面系统的深度集成,如拖放功能、桌面通知、系统托盘图标等。 8. **安全性与权限**:讨论AIR应用的安全模型,包括沙箱限制、用户权限请求以及如何处理安全问题。 9. ...

    小胖的 Adobe AIR with Ajax 实例课堂(三)

    6. **桌面集成**:学习如何利用AIR API实现桌面特定的功能,如拖放操作、桌面快捷方式或系统托盘图标。 7. **调试和测试**:分享调试AIR应用的技巧,包括模拟器和设备的使用,以及如何解决常见的运行时错误。 8. *...

    Felx3.0的效果

    AIR允许Flex应用运行在桌面环境中,提供与本地系统更深入的交互,例如访问文件系统、桌面通知和系统托盘图标等。 9. **性能优化**:Flex 3.0在性能方面进行了优化,能够处理大量数据和复杂特效,同时保持流畅的用户...

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

    创建系统托盘图标 第二十四章. FlexUnit单元测试(742) 24.1节. 创建应用FlexUnit框架的应用程序 24.2节. 运行FlexUnit单元测试 24.3节. 创建FlexUnit测试用例 24.4节. 添加测试用例到测试集合 24.5节. 在测试前后...

Global site tag (gtag.js) - Google Analytics