最近上网总是有人问我百度文库技术或者是flex paper技术。呵呵。其实这个东西没有想的那么难。就百度文库来说,可以证明无论是adobe的 flash paper还是开源 的flash2print都没有做到那么智能。为什么说智能呢?你分析下你ie里的百度文库里缓存的 swf 文件 。会发现每个swf文件都是由几个swf拼接而成的,每一个cws就是一个swf文件。而且在文件的开始会有一个{"totalPage":"210","fromPage":" 1","toPage":" 6"}字段。这个可以当成Json也可以理解成AS3的对象。当然要想使用它,首先你需要对他进行序列化。
totalPage 是说本文章的总页数。
fromPage 是从多少页来的。
toPage 是要到多少页去。
当然我们没有能力自己 开发 那样一个软件,那么就 使用 开源的flash2Print请求的时候要考虑到用户的体验所以在服务端生成swf文件的时候,一般都会选择拼页来实现。
那么请求第一页的时候,服务端发过来的 数据 是这样的,1-6页,为什么是1-6页呢,因为万恶的中国的带宽。呵呵。那么第二页的数据就是2-7页。
那么对应的请求:
Page id 页码
1 1-6
2 2-7
. .
. .
10 6-15
那么这是一个非常简单的规律,因为要考虑用户的跳页所以我们要去用户发送页码的前四页和后五页,这么做完全是为了是用户能更好的去体验并且减少服务端的压力。
那么后台调用并发送这些数据,我们在前端就 好办了。哈哈,写一个 播放器 就可以了那么首先我们要考虑一个问题就是, loader对就是loader,不能用常规的loader,因为返回的的是2进制文件,所以我们不能用display包里的 Loader 去解析了.因为他不是正常的swf,原因是这个2进制文件的开始还加了一个自定义对象需要我们去解析呢.
那么请问先生?你说不能用Loader对像,那你用什么呢?URLStream?URLLoader?,随你所好,用什么都行。URLLoader最简单了。哈哈。你可以用。关于这些加2进制的方法其实也就是相当于把数据 进行提炼,然后让AVM认识你,这样就可以播放了。不过我记得那时候我做的时候写的非常愚蠢。哈哈。也没有怎么弄明白就提笔就写,结果效率大打折扣。 源码<
百度文库技术浅析
最新推荐文章于 2021-07-27 14:07:19 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)