TS语言的Laya项目里,要用typescript对压缩过的文件解压缩。文件是AS3写的工具导出的。
怎么办,上github找一个库,地址以下
https://github.com/imaya/zlib.jsgit
下载找到的zlib.js或zlib.min.js文件
本身编写zlib.min.d.ts文件,代码以下github
export namespace Zlib { class Inflate { constructor(data:any); decompress(): any; } class Deflate { constructor(data:any); compress():any; } }
把zlib.min.js和zlib.min.d.ts文件放到项目里
这种工具性质的代码,最好写成上下文无关的静态类方法。typescript
export class ByteUtil { * 压缩 二进制数据 * @param bytes * @returns Array.<number> or Uint8Array */ public static compress(bytes:Laya.Byte):any { var byte8 = new Uint8Array(bytes.buffer); var defate = new Zlib.Deflate(byte8); var compressed = defate.compress(); return compressed; } /** * 解压 二进制数据 * @param compressed Array.<number> or Uint8Array */ public static uncompress(compressed: any): Laya.Byte { var inflate = new Zlib.Inflate(compressed); var plain = inflate.decompress(); var plainByte: Laya.Byte = new Laya.Byte(plain); return plainByte; } }
好了。AS3中能够直接保存Object对象到文件,但js、ts不行,因此构形成成通用的JSON格式,压缩后保存。
保存的配置文件叫joeng.data,以Laya.Loader.BUFFER的形式加载,工具
let configData:Laya.Byte = new Laya.Byte(); configData.writeArrayBuffer(Laya.Loader.getRes("res/pre/joeng.data")); let configUint8Array = new Uint8Array(configData.buffer); configData = ByteUtil.uncompress(configUint8Array); configData.pos = 0; let configStr:string = configData.getUTFBytes();
而后再把字符串configStr转成object便可。spa
本文参考自https://blog.csdn.net/sjt2238....net