Flex项目页面加载时引用Flash制作的进度动画

Flex加载页面时,进度条根据加载页的数值变化,显示以上的效果。

as层的代码如下:

var rectCacheHeight:Number=rectProgress.height;
rectProgress.height=12;
invertBG.mask=invertMask_mc; //达到倒影效果,invertMask_mc是渐变的形状块

//函数preloading的两个参数str_loaded,str_total分别是当前进度数,总加载数
//是用来读取Flex项目中setDownloadProgress函数的两个参数complete与total
function preloading(str_loaded:Number,str_total:Number){
   var rectProgress_height:Number=Math.floor((str_loaded*rectCacheHeight)/str_total);
   rectProgress.height=rectProgress_height;	
}

然后在库栏中,把此影片剪辑导出为PopoProgress.SWC文件,并引入到Flex项目的libs库中

注:库栏中,导出的SWC的名称与该影片剪辑的名称要一样,否则,Flex引用不了。( 待验证)

在Flex中新建ActionStript类文件,DownLoadProgressBar.as

package
{
  import flash.events.Event;
  import flash.events.ProgressEvent;

  import mx.preloaders.SparkDownloadProgressBar;
  //继承SparkDownloadProgressBar类
  public class DownLoadProgressBar extends SparkDownloadProgressBar
  {
    private var spreLoader:PopoProgress; //spreLoader定义为PopoProgress类型
		
     public function DownLoadProgressBar()
    {
	super();
    }
		
    override protected function initCompleteHandler(event:Event):void{
	dispatchEvent(new Event(Event.COMPLETE)); 
    }//初始化完成后执行的事件,既是加载进度结束后打开的主页面事件
		
    override protected function createChildren():void{
	if(!spreLoader){
		spreLoader=new PopoProgress();
		var sX:Number=Math.round((stage.stageWidth-spreLoader.width/2)/2);
		var sY:Number=Math.round((stage.stageHeight-spreLoader.height/2)/2);
		spreLoader.x=sX;
		spreLoader.y=sY;
		spreLoader.scaleX=spreLoader.scaleY=1.5;
		this.addChild(spreLoader);
	}
    }//用来判断spreLoader对象有没有添加,定义了位置与大小
		
     override protected function showDisplayForInit(elapsedTime:int, count:int):Boolean{
	return true;
     }
		
    override protected function showDisplayForDownloading(elapsedTime:int, event:ProgressEvent):Boolean{
	return true;
     }
		
     override protected function setDownloadProgress(completed:Number, total:Number):void{
	spreLoader.preloading(completed,total);
     } //这里就是引用了spreLoader.preloading的方法,读取complete与total数值,从而使Flash动画的进度条变化
		
      override protected function setInitProgress(completed:Number, total:Number):void{
	//设置初始化进度
      }
		
     override protected function initProgressHandler(event:Event):void{
	//设置初始化进度事件
      }
   }
}

最后在主程序中<s:Application 添加属性preloader="包地址.DownLoadProgressBar" ....

 usePreloader 指是否使用加载页面的动画,默认是true

此文是参考了以下两篇案例:

http://www.adobe.com/cn/devnet/flex/articles/flex-custom-preloader.html

http://www.ckplayer.com/bbs/forum.php?mod=viewthread&tid=10
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值