(Laya项目)JS/TS言语zip紧缩解紧缩三方库及其运用

TS言语的Laya项目里,要用typescript对紧缩过的文件解紧缩。文件是AS3写的东西导出的。
怎么办,上github找一个库,地点以下
https://github.com/imaya/zlib.js

下载找到的zlib.js或zlib.min.js文件
本身编写zlib.min.d.ts文件,代码以下

export namespace Zlib {
    class Inflate {
        constructor(data:any);
        decompress(): any;
     }
     
    class Deflate { 
        constructor(data:any);
        compress():any;
    }
}

把zlib.min.js和zlib.min.d.ts文件放到项目里
这类东西性子的代码,最好写成上下文无关的静态类要领。

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即可。

本文参考自https://blog.csdn.net/sjt2238…

    原文作者:zengjoeng
    原文地址: https://segmentfault.com/a/1190000018879658
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞