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();