Flex框架:RSL和主程序(swf)是并行下载的?

 

 Flex框架:RSL和主程序(swf)是并行下载的吗?

用下面的代码来验证:

自定义进度条,重写全部六个加载过程的监听函数,再重写的每个函数中把信息写入变量中,然后看变量的内容来确定各个监听函数的调用顺序:

ProgressEvent.PROGRESS, progressHandler);    
Event.COMPLETE, completeHandler);
        
RSLEvent.RSL_PROGRESS, rslProgressHandler);
RSLEvent.RSL_COMPLETE, rslCompleteHandler);
RSLEvent.RSL_ERROR, rslErrorHandler);
        
FlexEvent.INIT_PROGRESS, initProgressHandler);
FlexEvent.INIT_COMPLETE, initCompleteHandler);


 >>源代码如下:

Main.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" 
			   preloader="Preloader"
			   minWidth="955" minHeight="600">

</s:Application>


 

Preloader.as

package 
{
 import flash.events.Event;
 import flash.events.ProgressEvent; 
 import mx.events.RSLEvent;
 import mx.preloaders.SparkDownloadProgressBar;
 
 
 public class Preloader extends SparkDownloadProgressBar
 {
  
  private var txt:String = "";
  
  public function Preloader()
  {
   super();
  }
  
  override protected function completeHandler(evt:Event):void
  { 
   txt+="completeHandler"+"\n\t";
   super.completeHandler(evt);
  }
  
  override protected function rslCompleteHandler(evt:RSLEvent):void
  { 
   txt+="rslCompleteHandler"+"==" + evt.bytesLoaded + "==" + evt.bytesTotal + "\n\t";
   super.rslCompleteHandler(evt);
  }  override protected function initCompleteHandler(evt:Event):void
  {
   txt+="initCompleteHandler"+"\n\t";   
   dispatchEvent(new Event(Event.COMPLETE));     //在此处打断点,通过Debug的形式来查看txt的值
  }
  
  
  override protected function progressHandler(evt:ProgressEvent):void {
   txt+="PH"+"==" + evt.bytesLoaded + "==" + evt.bytesTotal + "\n\t";
   super.progressHandler(evt);
  }
  
  override protected function rslProgressHandler(evt:RSLEvent):void {
   txt+="rslPH"+"==" + evt.bytesLoaded + "==" + evt.bytesTotal + "\n\t";
   super.rslProgressHandler(evt);
  }
  
  override protected function initProgressHandler(evt:Event):void {
   txt+="initProgressHandler"+"\n\t";
   super.initProgressHandler(evt);
  }
 }
}


 

>>通过Debug得到的结果如下(为查看方便,把连续的相同项做了删除)

可以得出如下结论:

(1)主程序(swf)一下子就下载完了,然后RSL才开始下载。 -->结果看起来虽然是这样,从源代码分析会是如何呢

(2)ProgressEvent.PROGRESS事件反映的是主程序(swf)和RSL合起来的进度信息,而并非只反映其中一项

(3)事件【Event.COMPLETE(全部下载完成后发出的事件)】的确如其定义的那样

txt的内容分析结果
PH==21409850==2140985021409850是主程序的大小,奇怪的是一下子就全部下载完了?
rslPH==8192==312694312694是某个RSL的大小,它通过若干次的最终下载完毕
rslPH==312694==312694
PH==21722544==2172254421722544是主程序(21409850)+已经下载完成的RSL(312694)的总和
rslCompleteHandler==312694==312694
rslPH==8192==542900
rslPH==542900==542900
PH==22265444==22265444
rslCompleteHandler==542900==542900
rslPH==8192==528317
rslPH==528317==528317
PH==22793761==22793761
rslCompleteHandler==528317==528317
rslPH==8192==776202
rslPH==776202==776202
PH==23569963==23569963
rslCompleteHandler==776202==776202
rslPH==8192==69334
rslPH==69334==69334
PH==23639297==23639297
rslCompleteHandler==69334==69334
PH==23639297==23639297
PH==23639297==23639297
completeHandlerRSL和主程序(swf)源文件全部下载完毕后发出该事件
initProgressHandlerRSL和主程序(swf)源文件全部下载完毕后要初始化主程序(swf)
initProgressHandler
initProgressHandler
initProgressHandler
initCompleteHandler主程序(swf)初始化完毕后发出该事件,移除进度条,显示主程序

 
 
 
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值