flex查詢數據時彈出正在查詢,查到數據自動關閉,類似進度條

1.先創建一個ProgressBarDialog.mxml文件:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark" 
		 xmlns:mx="library://ns.adobe.com/flex/mx" width="200" height="100">
	<fx:Declarations>
		<!-- 將非可視元素(例如服務、值對象)放在此處 -->
	</fx:Declarations>
	
	<fx:Script>
		<![CDATA[
			import mx.managers.PopUpManager;
			public  function showMessage(msg:String,swfVisible:Boolean):void
			{
				txtMessage.text = msg;
				swfMessage.visible = swfVisible;
			}		
			
			public function closed():void{
				PopUpManager.removePopUp(this);
			}
			
			private function dragControl(pl:TitleWindow):void  
			{  
				pl.isPopUp = true;  
			} 
		]]>
	</fx:Script>
	<s:TitleWindow id="vb" close="closed()" title="溫馨提示:" width="200" height="100" initialize="dragControl(vb)">
		<mx:HBox id="boxMessage" width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
			<s:Label id="txtMessage" text=""/>
			<mx:SWFLoader id="swfMessage" source="save.swf" visible="true"/>
		</mx:HBox>	
	</s:TitleWindow>
</s:Group>


2.創建一個PopUpEffect.mxml文件:

package com.effect
{
	import flash.display.DisplayObject;
	import flash.geom.Point;
	import flash.utils.setTimeout;
	
	import mx.core.IFlexDisplayObject;
	import mx.effects.Blur;
	import mx.effects.Move;
	import mx.events.MoveEvent;
	import mx.events.TweenEvent;
	import mx.managers.PopUpManager;
	
	import spark.effects.Resize;

	public class PopUpEffect
	{
		public function PopUpEffect()
		{
		}
		public static function Show(control:IFlexDisplayObject,parent:DisplayObject,modal:Boolean=false):void
        {
			if(parent.width>0){
				PopUpManager.centerPopUp(control);
				var GX:Number = parent.localToGlobal(new Point(0,0)).x;
				var GY:Number = parent.localToGlobal(new Point(0,0)).x;
				control.x = GX+(parent.width-control.width)/2;
				control.y = GY+20;
			}else
			{
				control.x=  parent.x;
				control.y=  parent.y;
			}
            PopUpManager.addPopUp(control,parent,modal); 
        }
        public static function ShowPosition(control:IFlexDisplayObject,parent:DisplayObject,yPosition:int,modal:Boolean=false):void
        {
            var mShowEffect:Blur=new Blur();
            mShowEffect.blurXFrom=255;
            mShowEffect.blurYFrom=255;
            mShowEffect.blurXTo=0;
            mShowEffect.blurYTo=0;
            mShowEffect.target= control;
            mShowEffect.duration=300;
            control.x = 0;
            control.y = parent.height-250-yPosition;            
            PopUpManager.addPopUp(control,parent,modal); 
            mShowEffect.play();
        }
		public static function ShowPositionXY(control:IFlexDisplayObject,parent:DisplayObject,xPosition:int,yPosition:int,modal:Boolean=false):void
        {
            var mShowEffect:Blur=new Blur();
            mShowEffect.blurXFrom=255;
            mShowEffect.blurYFrom=255;
            mShowEffect.blurXTo=0;
            mShowEffect.blurYTo=0;
            mShowEffect.target= control;
            mShowEffect.duration=300;
            control.x = xPosition;
            control.y = yPosition;
            PopUpManager.addPopUp(control,parent,modal); 
            mShowEffect.play();
        }
        public static function Hide(control:IFlexDisplayObject):void
        {
            var mHideEffect:Blur=new Blur();
            mHideEffect.blurXFrom=0;
            mHideEffect.blurYFrom=0;
            mHideEffect.blurXTo=255;
            mHideEffect.blurYTo=255;
            mHideEffect.addEventListener(TweenEvent.TWEEN_END,function():void{
                PopUpManager.removePopUp(control);
            });
            mHideEffect.duration=300;
            mHideEffect.target=control;
            mHideEffect.play();            
        }
		public static function ShowResize(control:IFlexDisplayObject,parent:DisplayObject,modal:Boolean=false):void
		{
			control.x = (parent.width - control.width)/2;
			control.y = (parent.height - control.height)/2;
			PopUpManager.addPopUp(control,parent); 
		}
		public static function HideResize(control:IFlexDisplayObject):void
		{
			PopUpManager.removePopUp(control);
		}
		public static function ShowDown(control:IFlexDisplayObject,parent:DisplayObject,modal:Boolean=false):void
		{
			PopUpManager.addPopUp(control,parent,false); 			
			control.x = (parent.width - control.width)/2;
			var mShowEffect:Move = new Move();
			mShowEffect.yFrom = - control.height;
			mShowEffect.yTo = (parent.height - 	control.height)/2;
			mShowEffect.target= control;
			mShowEffect.duration=300;
			mShowEffect.play();
		}
		public static function initWindow(control:IFlexDisplayObject,parent:DisplayObject,modal:Boolean=false):void
		{
			PopUpManager.addPopUp(control,parent,false); 			
			control.x = -1000;
			control.y = -1000;
		}
		public static function ShowUp(control:IFlexDisplayObject,parent:DisplayObject):void
		{
			var mHideEffect:Move=new Move();
			mHideEffect.yTo = - control.x;
			mHideEffect.yFrom = (parent.height - 	control.height)/2;
			mHideEffect.addEventListener(TweenEvent.TWEEN_END,function():void{
				PopUpManager.removePopUp(control);
			});
			mHideEffect.duration=300;
			mHideEffect.target=control;
			mHideEffect.play();            
		}
	}
}

2.在需要引用的地方創建該類的對象

例如:在某個文件的方法裏創建調用:

var progressBarDialog:ProgressBarDialog = new ProgressBarDialog();
PopUpEffect.ShowPositionXY(progressBarDialog,this,tWidth/2-75,tHeight/2-75,true);
progressBarDialog.showMessage("正在查詢,請稍候...",true);

可以在判斷未查到數據後,再次調用:

progressBarDialog.showMessage("對不起,未查到數據!",false);
也可以在查到數據後自動關閉:

progressBarDialog.closed();



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章