Flash(Flex)对文件下载进度的监控原理分析

来源:互联网 发布:淘宝卖女装上哪找货源 编辑:程序博客网 时间:2024/06/05 15:38

下载进度 = 已下载字节数 / 总字节数 * 100%

总字节数通常在文件传输之前的协议握手阶段就能知晓;

而已下载字节数则通过开发语言的底层API(文件传输API)可以获得(对于开发者,Flash或Flex变相地通过发布事件向外界透漏这个信息)。

从这个意义上讲,对文件下载的进度进行监控本身是很容易的。

 

谁在对下载文件的进度进行监控?

FlashPlayer通过URL下载程序A.swf,那么很容易想到:FlashPlayer对A.swf的下载进度进行监控。

我们看到的是沉稳的蓝灰色背景下一个长方形的进度条不停变化。

这个进度条是FlashPlayer提供的吗?

不是,是Flex程序(Flex框架程序)提供的。

 

奇怪,这么一来似乎是A.swf在对自己的下载进度进行监视,而不是FlashPlayer。

这不是矛盾了吗?

 

其实,本质上,还是FlashPlayer对A.swf的下载进度进行了监控。

只不过是FlashPlayer首先获知进度信息,然后通过事件机制把进度信息传入到到A.swf中,由A.swf把这些信息显示到自己的进度条中而已。该进度条是Flex框架提供的,被编译到A.swf中。

因此,我们可以自定义进度条来替换Flex框架提供的那个东东,来显示FlashPlayer传入的进度信息(已下载字节数、总字节数)。

该设计够聪明的!

原创粉丝点击