现在很多客户端游戏的开发团队都在转向搞3D页游,这就涉及到原来资源的重用,在这个需求上,开发的时候采用了第三方工具swift(http://code.google.com/p/swift-tool/)把资源打包成swf。由于资源有几百m,文件数量上千个,这就利用到了python把资源文件按照一定原始文件的大小进行打包成一个swf。

(1)工具的具体实现。

1.swift的使用。打开http://code.google.com/p/swift-tool/,能够了解到swift支持读取一个xml打包配置文件把图片,文本,字体,mp3生成swf,加载swf后能够直接通过类名得到相应的资源。

2.python的作用。python的作用在于把要打包的文件输出成xml配置文件,然后调用swift进行打包。python的打包配置文件(resSetting.py)配置项有合并文件的文件大小,打包目录,要生成的资源目录。合并文件的最大值设定是为了能够将多个文件打包成一个swf,而不是一个文件一个swf。

3.资源配置xml。打包的过程无非就是python遍历整个资源文件目录,把一个文件夹内的文件按可合并的最大文件大小根据swift要求的结构输出打包配置xml,然后调用swift调用打包配置xml输出swf,最终全部资源文件打包完成后,我们还需要生成一个资源配置xml,这个xml保存了原始文件的实际路径和打包后所在的swf文件的信息,游戏启动后,首先得加载这个配置,加载资源时,就能根据这个配置去找到文件存在的swf文件。

(2)工具的具体使用。

1.安装python 3.2和java虚拟机jvm。如果未用过python,python安装完后切记要把python的安装目录放入环境变量。

2.假设有一个res文件,里面包含有a.txt和b.jpg,文件夹1内也有a.txt和b.jpg。如图

 

3.打包工具是这样的,如图

 

4.运行execute.bat,会调用resPack.py,写成bat也只是方便而已,这也是为什么要设置py的环境变量的原因了。运行过程是这样的,如图

 

5.运行成功,会生成new_res文件,如图

 

 

(3)工具的改良。

1.直接按文件大小来计算是简单粗暴的方法,如何合理的把多个文件放入同一个swf是个值得改进的地方。

2.可以增加一些过滤选项,比如有些单一文件单独打成一个swf,有些文件塞选不打进包内,这个要看具体的需求了,不过以上两点需求都是在项目开发中遇见的。

 

51cto的附件不能超过2M,目前金山快盘的下载链接有问题,3月16号后快盘功能完善再发下载链接.有需要的留邮箱。