最近在项目中直接使用美术提供的含用位图的SWF做资源显示时发现,由于把位图分布在每一帧中,资源回收不及时,导致内存占用很夸张,于是尝试使用Starling框架实现,直接把SWF内容导出为位图序列和配置文件,然后再将位图序列存入SWF压缩,这样下来不仅文件小了不少,性能提升也非常明显,但将美术提供的资源转换成程序可用文件的过程中,由于还要调整动作名、测量动作偏移值等,导致效率非常低下,再考虑到Stage3D对Flash Player版本的要求,于是决定使用DOM的Flexlite框架里的动画来处理,文件是以DXR文件存储,其中包含了动画本身的位图、位置等信息,支持JPEG32、JPEGXR、PNG三种压缩格式。

为了方便直接将SWF文件转为DXR文件,于是用Adobe Air写了这个小工具,这下不仅性能没问题,Flash Player版本也不用限制在11以上了,最重要的还是工作效率的提升,再也不用苦逼地搞资源转换了。:)

使用说明

DXRBuilder只支持导出指定swf文件中含有链接名的MovieClip元件为FlexLite中使用的DXR文件,所以在进行导出前,要设置好需要导入的元件的链接名。
关于DXR动画文件的使用,请参考Flexlite的WIKI源码和DXR动画文件结构图

压缩类型说明

  • JPEG32: 压缩率最高,但效果稍差
  • JPEGXR: 压缩率高效果好但只支持FP11以上版本
  • PNG: 压缩率不高,但效果好

点击下载

另外DXRBuilder代码放在 Github上,有兴趣的朋友可以自己改进。

DXRBuilder