加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 05:11:08 所属栏目:百科 来源:网络整理
导读:? ?Flex框架:RSL和主程序(swf)是并行下载的吗? 用下面的代码来验证: 自定义进度条,重写全部六个加载过程的监听函数,再重写的每个函数中把信息写入变量中,然后看变量的内容来确定各个监听函数的调用顺序: ProgressEvent.PROGRESS,progressHandler);
?

?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"+"nt";
   super.completeHandler(evt);
  }
  
  override protected function rslCompleteHandler(evt:RSLEvent):void
  { 
   txt+="rslCompleteHandler"+"==" + evt.bytesLoaded + "==" + evt.bytesTotal + "nt";
   super.rslCompleteHandler(evt);
  }  override protected function initCompleteHandler(evt:Event):void
  {
   txt+="initCompleteHandler"+"nt";   
   dispatchEvent(new Event(Event.COMPLETE));     //在此处打断点,通过Debug的形式来查看txt的值
  }
  
  
  override protected function progressHandler(evt:ProgressEvent):void {
   txt+="PH"+"==" + evt.bytesLoaded + "==" + evt.bytesTotal + "nt";
   super.progressHandler(evt);
  }
  
  override protected function rslProgressHandler(evt:RSLEvent):void {
   txt+="rslPH"+"==" + evt.bytesLoaded + "==" + evt.bytesTotal + "nt";
   super.rslProgressHandler(evt);
  }
  
  override protected function initProgressHandler(evt:Event):void {
   txt+="initProgressHandler"+"nt";
   super.initProgressHandler(evt);
  }
 }
}


?

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

可以得出如下结论:

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

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

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

txt的内容 分析结果
PH==21409850==21409850 21409850是主程序的大小,奇怪的是一下子就全部下载完了?
rslPH==8192==312694 312694是某个RSL的大小,它通过若干次的最终下载完毕
rslPH==312694==312694
PH==21722544==21722544 21722544是主程序(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
completeHandler RSL和主程序(swf)源文件全部下载完毕后发出该事件
initProgressHandler RSL和主程序(swf)源文件全部下载完毕后要初始化主程序(swf)
initProgressHandler
initProgressHandler
initProgressHandler
initCompleteHandler 主程序(swf)初始化完毕后发出该事件,移除进度条,显示主程序

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读