`

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

    博客分类:
  • Flex
阅读更多

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

托盘功能,是应用程序在最小化或关闭时,隐藏窗口,将应用程序显示在托盘处,不显示在任务栏中.还有类似于QQ提醒功能的实现.

 

AIR程序的WindowApplication文件的mxml;

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApplication()">
	<mx:Style source="css/CSS.css"/>
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.core.UIComponent;
			import mx.core.Container;
			import mx.events.ItemClickEvent;      	
			import mx.events.CloseEvent;
			import flash.display.BitmapData;
			import flash.errors.*;
			import flash.events.*;
			import flash.external.*;
			import flash.desktop.NativeApplication;
	
			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("png/systray_icon_16.png"));//这里先要加载托盘图标的小图片   
                this.addEventListener(Event.CLOSING,closingApplication);//设置关闭体的事件   
            }   
               
	        //关闭窗体的事件   
	        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 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 = "订单提醒";   
	            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();   
	        }
	        
	        public function about():void{
	        	Alert.okLabel="知道了";
	        	Alert.show("JODY信息有限公司\nJODY信息有限公司,荣誉出品。");
	        }
	        
	        public function infos():void{
	        	
	        	 var popUp:PopMsg=new PopMsg();
	             popUp.systemChrome=NativeWindowSystemChrome.NONE;
	             popUp.transparent=true;
	             popUp.showTitleBar=false;
	             popUp.showStatusBar=false;
	             popUp.open();
	             popUp.init();

	        }
	        public function getOrderInfos():void{
	        	srv.send();
	        	infos();
	        }
	        
		]]>
	</mx:Script>
	<mx:ApplicationControlBar width="98%" top="0" horizontalCenter="1" height="59" fillAlphas="[1.0, 1.0]" fillColors="[#2F58F1, #2F58F1]" color="#FBFDFE" verticalAlign="middle">
		<mx:ControlBar height="49" width="100%" horizontalAlign="left" verticalAlign="middle">
			<mx:Image source="png/logoicon.png" autoLoad="true" width="32" height="32"/>
			<mx:Label text="订单客户端" fontWeight="bold" fontFamily="Verdana" fontSize="14"/>
			<mx:Spacer width="100%"/>
			<mx:Button id="f5order" label="刷新订单" cornerRadius="12" color="0xffffff" fillColors="[0x55C0FF,0x0050AA]" fillAlphas="[1.0,1.0]" highlightAlphas="[1.0,0.2]" focusAlpha="0.2"
		           textRollOverColor="0xffffff" textSelectedColor="0x55C0FF" click="getOrderInfos()" labelPlacement="right"/>
			<mx:Button id="aboutinfo" label="关于系统" cornerRadius="12" color="0xffffff" fillColors="[0x55C0FF,0x0050AA]" fillAlphas="[1.0,1.0]" highlightAlphas="[1.0,0.2]" focusAlpha="0.2"
		           textRollOverColor="0xffffff" textSelectedColor="0x55C0FF" click="about()" labelPlacement="right"/>
		</mx:ControlBar>
		
	</mx:ApplicationControlBar>
	<mx:HTTPService id="srv" url="order.xml"/>
	<mx:Panel width="98%" height="90%" layout="absolute" horizontalCenter="1" top="67" title="订单信息">
		<mx:DataGrid dataProvider="{srv.lastResult.orders.order}" width="100%" horizontalCenter="0" top="0" height="80%">
			<mx:columns>
				<mx:DataGridColumn headerText="序号" dataField="id"/>
				<mx:DataGridColumn headerText="订单号" dataField="orderId"/>
				<mx:DataGridColumn headerText="订单来源" dataField="orderfor"/>
				<mx:DataGridColumn headerText="订单金额" dataField="amout"/>
				<mx:DataGridColumn headerText="订单状态" dataField="status"/>				
			</mx:columns>
		</mx:DataGrid>
	</mx:Panel>
</mx:WindowedApplication>

 

下面是模式的HttpService请求的order.xml

 

<?xml version="1.0" encoding="utf-8"?>
<orders>
    <order orderId="D10001">
    	<id>1</id>
        <orderfor>Web商城</orderfor>
        <amout>210</amout>
        <status>未受理</status>        
    </order>    
	<order orderId="D10002">
    	<id>2</id>
        <orderfor>Wap商城</orderfor>
        <amout>310</amout>
        <status>未受理</status>        
    </order>
    <order orderId="D10003">
    	<id>3</id>
        <orderfor>SMS商城</orderfor>
        <amout>410</amout>
        <status>未受理</status>        
    </order>
</orders>

 QQ提醒功能的PopMsg.mxml

 

<?xml version="1.0" encoding="utf-8"?>

<mx:Window xmlns:mx="http://www.adobe.com/2006/mxml" width="300" height="200">

<mx:Script>

        <![CDATA[
        	import mx.controls.Alert;

            //定时器淡入

                private var Timer1:Timer=new Timer(1);

                //停留时间

                private var Timer2:Timer=new Timer(8000,1);

                //定时器淡出

                private var Timer3:Timer=new Timer(1);

                private var _x:uint=0;

                private var _y:uint=0;

                private var _height:uint=0;

                private  var screenBounds:Rectangle;

                public function init():void{

                        this.startPosition();

                        this.Timer1.addEventListener(TimerEvent.TIMER,scorllUp);

                        //this.colseBtn.addEventListener(MouseEvent.CLICK,closeApp);

                        this.Timer1.start();

                        

                }

                /**

                 *弹出窗口

                 */  

                private function scorllUp(e:TimerEvent):void{

                        if(this._height<200){

                                this._height++;

                                this.setLocation(this._x,this._y-30-this._height);

                        }

                        else{

                                this.Timer2.addEventListener(TimerEvent.TIMER,wait);

                            this.Timer2.start();

                            this.Timer1.stop();

                        }

                }

                /*

                *设置y坐标

                *

                */

                private function setLocation(x:uint,y:uint):void{

                        this.nativeWindow.y=y;

                        this.nativeWindow.x=x;

                        //trace(x+'='+y);

                }

                private function wait(e:TimerEvent):void{

                        this.Timer3.addEventListener(TimerEvent.TIMER,scorllDown);

                        this.Timer3.start();

                }

                private function scorllDown(e:TimerEvent):void{
	
                        try{

                        if(this.Timer2!=null){

                            this.Timer2.stop();

                            this.Timer2=null;

                        }

                        if(this._height>0){

                                this._height--;

                                //trace(this._height);

                                

                                this.setLocation(this._x,this.nativeWindow.y+1);

                                //trace(this.nativeWindow.y);

                        }

                        else{

                                this.Timer3.stop();

                                this.close();

                        }

                        }catch(error:Error){
                        	Alert.show("运行出现异常"+error.message);
                        }

                }

                /*

                *初始位置

                */

                public function startPosition():void{

                    this.screenBounds=Screen.mainScreen.bounds;
					//trace(this.screenBounds);
                    this._x=this.screenBounds.width- 300;
					//trace(this._x);
                    this._y=this.screenBounds.height;
					//trace(this._y);
                    this.nativeWindow.x=this._x;

                    this.nativeWindow.y=this._y;

                }

                private function closeApp(e:MouseEvent):void{

                        this.close();

                }
				public function closes():void{
					this.close();
				}
                

        ]]>

</mx:Script>

		<mx:TitleWindow title="系统消息" titleIcon="@Embed(source='png/systray_icon_16.png')" width="100%" height="100%" layout="absolute">
                <mx:Label  text="您有新的订单,请点击查看。\n请及时受理订单。"  width="179" height="111"/>
        </mx:TitleWindow>
                

</mx:Window>

 

  • 大小: 464 Bytes
  • 大小: 5.1 KB
  • 大小: 898 Bytes
  • DCRM.rar (380 KB)
  • 描述: AIR安装包
  • 下载次数: 231
  • DCRM.rar (1010.3 KB)
  • 描述: 源程序
  • 下载次数: 371
分享到:
评论
1 楼 zwh910621 2010-08-21  
看来JE的人对桌面程序不感兴趣呀
LZ很好,加油
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Flex4:开发RIA应用程序

    以上知识点概述了Flex4开发RIA应用程序的核心概念,特点,开发环境,项目结构,与Flash的关系,部署方式,开发流程和学习途径,旨在帮助开发者熟悉和掌握使用Flex4技术开发高效、响应快速的互联网应用程序的各个方面...

    Flex4开发RIA应用程序.pdf

    通过系统的学习,参与者能够熟悉Flex4的基础概念、核心技术和开发工具,并能够运用所学知识创建出具有吸引力且功能丰富的应用程序。 #### 二、课程结构与内容 ##### 2.1 课程简介与学习方法 - **课程形式**:采用...

    Flex应用程序开发

    Flex的核心优势在于其强大的组件库和数据绑定能力,使得开发者能够轻松地构建出功能丰富、视觉效果出众的Web和桌面应用程序。 #### 二、Flex与Adobe Flash Platform Flex是Adobe Flash Platform的重要组成部分之一...

    Flex4:开发RIA应用程序 pdf

    Flex4是Adobe公司推出的一种强大的富互联网应用(Rich Internet Application, RIA)开发框架,它主要基于ActionScript和MXML,用于构建具有丰富图形界面和交互功能的Web应用程序。本书《Flex4:开发RIA应用程序》...

    基于FLEX构建RIA应用的研究与实现.pdf

    本文主要研究和实现了基于FLEX构建的RIA应用,旨在探讨FLEX技术在企业级应用程序中的应用优势。 首先,文章回顾了应用程序的发展历程,从主机模式到客户机/服务器模式,再到浏览器/服务器模式。随着互联网的发展,...

    Flex_4:开发RIA_应用程序.pdf

    随着版本4的发布,Flex提供了更强大的功能来创建动态且交互丰富的Internet应用程序(RIA)。 - **RIA(富互联网应用)定义**: - 富互联网应用(Rich Internet Applications, RIA)是指一类提供类似桌面应用程序用户...

    Flex 3 RIA开发详解与精深实践

    《Flex 3 RIA开发详解与精深实践》是一本深度探讨富互联网应用程序(RIA)开发的专著,特别关注Adobe Flex 3这一强大的开发框架。Flex 3是Adobe为构建交互性强、视觉效果丰富的Web应用程序提供的开源工具,它允许...

    测试flex应用程序

    在IT行业中,Flex是一种用于构建富互联网应用程序(RIA)的框架,它基于ActionScript和Flash Player或Adobe AIR运行时。Flex应用程序通常具有丰富的用户界面,能够提供动态交互体验。而当我们需要对这些Flex应用程序...

    Flex_4:开发RIA_应用程序(中文版)

    ### Flex 4:开发RIA应用程序知识点详解 #### 一、Adobe RIA开发技术认证与教材概述 - **Adobe RIA开发技术认证**:是Adobe公司为开发者提供的专业认证,旨在帮助开发者掌握创建丰富的互联网应用程序(RIA)所需的...

    Flex_4:开发RIA_应用程序

    相比于早期版本,Flex 4引入了重大的改进和新特性,如Spark组件模型和图形皮肤ning,显著提升了开发效率和应用程序的表现力。 深入学习Flex 4开发,首先要了解其核心概念和架构。Flex框架包含MXML和ActionScript两...

    《Flex_4:开发RIA_应用程序》源代码

    总而言之,《Flex 4:开发RIA应用程序》的源代码是一个学习和提升Flex 4技能的宝贵资源。通过实践这些代码,开发者不仅可以熟悉Flex 4的API和用法,还能培养良好的编程习惯,提高问题解决能力,为构建高质量的RIA...

    flex 窗口托盘和全屏

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

    Flex.4.0.RIA开发详解讲义

    本书由浅入深,循序渐进地讲解了如何使用Flex技术开发RIA应用程序。全书内容包括Flex简介、安装和配置Flex开发运行环境、熟悉Flex开发工具、ActionScript. 3.0语法、Flex组件开发、CSS布局、美化界面、数据传输与...

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

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

    RIA及其基于Flex的应用开发模型

    因此,新的RIA技术应该建立在这些现有模型之上,以便于快速学习和应用。 ##### 2.3 采用标准的协议及API RIA技术应当支持如HTML/HTTP、XML、SOAP/WebService等标准协议和技术,以确保与其他系统的互操作性。 ####...

    flex3应用程序示例

    Flex 3是Adobe开发的一款用于构建富互联网应用程序(RIA)的开源框架,它基于ActionScript 3.0,允许开发者创建具有丰富交互性和动态图形的Web应用。 在Flash Builder 3中开发Flex应用程序,用户可以利用其强大的...

    Flex 4:开发RIA 应用程序

    该书为adobe flex4认证的内部培训教材,以Adobe Flash Builder 4为基础培训,目前市面上的flex4的教材太少,这个发上来大家一起看看吧

    Flex_4.0_RIA开发详解.pdf

    在阅读上述内容后,可以看出Flex 4.0是一个功能丰富的RIA开发框架,它不仅提供了强大的编程和设计工具,还确保了良好的用户体验和应用性能。FlashBuilder作为其集成开发环境,简化了从安装到应用开发的整个流程。...

Global site tag (gtag.js) - Google Analytics