Flash(Flex)对文件下载进度的监控原理分析
下载进度 = 已下载字节数 / 总字节数 * 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传入的进度信息(已下载字节数、总字节数)。 该设计够聪明的! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |