2010-05-04 56 views
2

我为Flex应用程序创建了一个自定义预加载器,并且注意到了以下行为:加载时,进度条变为100%,然后再变回备份等,直到应用程序加载完成。为什么在AS3预加载器中bytesTotal会增加?

当我在dowloadprogress监听器中添加跟踪时,我发现应用程序正在加载时,byteLoaded和bytesTotal都增加,但不一定同时增加。

代码:

private function onDownloadProgress(event:ProgressEvent):void { 
     var loaded:int = event.bytesLoaded; 
     var total:int = event.bytesTotal; 
     trace(event.target,loaded,total); 
     _starfield.progress = loaded/total; 
    } 

输出:

[object Preloader] 134276 134276 
[object Preloader] 265348 285007 
[object Preloader] 285007 285007 
[object Preloader] 678223 1322116 
[object Preloader] 809295 1322116 
[object Preloader] 1322116 1322116 
[object Preloader] 1322116 1322116 
[object Preloader] 1387652 1584342 
[object Preloader] 1791882 1791882 
[object Preloader] 2293133 2293133 
[object Preloader] 2362938 2362938 
[object Preloader] 2362938 2362938 
[object Preloader] 2362938 2362938 

为什么加载过程中BYTESTOTAL变化?

回答

4

随着运行时共享库​​开始下载,总数可能会增加。您可以通过阅读Preloader源代码了解更多信息。

SDK \框架\项目\框架的\ src \ MX \预加载\ Preloader.as

这里有一些链接,自定义预加载的样本用于处理RSL的比默认的好。

http://coding.bhirschmann.de/2008/03/20/preloader-for-flex-with-rsl-support/

http://www.leavethatthingalone.com/blog/index.cfm/2009/11/11/Flex4CustomPreloader

+0

好的,这似乎是合理的。在这种情况下计算%加载的推荐方式是什么? – justkevin 2010-05-04 14:30:59

+0

@justkevin,我添加了一些自定义预加载器示例的链接,可以更好地处理RSL。 – 2010-05-04 21:49:35

+0

这两者都有助于理解RSL事件,但不幸的是,这两者似乎都不能解决我个案中的问题。我的应用程序连续加载6个大小不一的RSL(除了应用程序本身)。无论如何,估计总应用程序已经(或将要)被加载的程度有多少,直到最后一个RSL启动。 我可能不得不用一个进度条来伪装它,每帧随机减少x%。 – justkevin 2010-05-06 14:48:01

0

或另一种方法是,打破了预加载到6个阶段,与预加载器加载每个组件和运行从0到100%,则递增一个号码或“份”装并在屏幕上显示它