Egret社区

求Zlib库

2015-4-16 22:31
30774
1银子
我需要把用zlib压缩的ByteArray数据在游戏内解压,发现ByteArray没有提供解压接口,找了一下,看到官方有提供zlib.min.js这个文件。
但是遇到一个问题,这个库是被乱码过的,不知道里面的方法命名,我该怎样导入到egret项目里面来用呢?

分享到 :
1 人收藏

4 个回复

倒序浏览
fanjiaqi  自成一派 | 2015-7-7 16:47:01
1.把outlibs文件夹放在项目根目录(虽然官方规范说是引用三方类库需要放在项目之外的文件夹,但是我放在项目根目录下暂时没发现问题~~),修改egretProperties.json添加模块:

{
                        "name": "Zlib",
                        "path": "./outlibs"
}


2.重新编译引擎,这时在项目libs文件夹下会多出一个Zlib文件夹。
3.测试代码
[mw_shl_code=actionscript3,true]//原始字节流
        var bytes: ArrayBuffer = new ArrayBuffer(3);
        //由于接口需要传入Uint8Array类型参数,所以在此进行ArrayBuffer2Uint8Array转换
        var plain:Uint8Array = new Uint8Array(bytes);
        //zlib压缩
        var deflate = new Zlib.Deflate(plain);
        var compressed:Uint8Array = deflate.compress();
        //zlib解压缩
        var inflate = new Zlib.Inflate(compressed);
        var deplain:Uint8Array = inflate.decompress();
        //在测试中发现解压后的deplain.buffer值不正确(也不知道为毛)
        //所以要想得到最终的ArrayBuffer,需要重新复制一份deplain
        var newDeplain: Uint8Array = new Uint8Array(deplain.length);
        for(var i: number = 0;i < deplain.length;i++) {
            newDeplain = deplain;
        }
        //zlib解压后的字节流
        var lastbytes: ArrayBuffer = newDeplain.buffer;[/mw_shl_code]


outlibs.zip

7.68 KB, 下载次数: 191, 下载积分: 银子 -1

zlib库文件

taiyang5535  登堂入室 | 2015-7-15 19:44:45
fanjiaqi 发表于 2015-7-7 16:47
1.把outlibs文件夹放在项目根目录(虽然官方规范说是引用三方类库需要放在项目之外的文件夹,但是我放在项 ...

谢谢,不好意思今天才看到.
Vincent-lily  登堂入室 | 2016-8-5 09:54:46
fanjiaqi 发表于 2015-7-7 16:47
1.把outlibs文件夹放在项目根目录(虽然官方规范说是引用三方类库需要放在项目之外的文件夹,但是我放在项 ...

as3对数据压缩var b:ByteArray = new ByteArray();   b.writeInt(1); b.compress();没法用此方法解压不知道怎么回事,而且我在egret里面用此方法压缩数据得到的ByteArray 长度跟as不一样
     / /原始字节流
        var b:egret.ByteArray = new egret.ByteArray();
        b.writeInt(1);
        //由于接口需要传入Uint8Array类型参数,所以在此进行ArrayBuffer2Uint8Array转换
        var plain:Uint8Array = new Uint8Array(b.buffer);
        //zlib压缩
        var deflate = new Zlib.Deflate(plain);
        var compressed:Uint8Array = deflate.compress();
        var newDeplain: Uint8Array = new Uint8Array(compressed.length);
        for(var i: number = 0;i < compressed.length;i++) {
            newDeplain = compressed;
        }
        var b1:egret.ByteArray = new egret.ByteArray(newDeplain.buffer);
        console.log(b1.length);
xb274271924  圆转纯熟 | 2016-11-8 14:03:09
这个打包APP的时候报错,进不了游戏怎么破?
TypeError: undefined is not a valid argument for 'in' (evaluating 'c[0]in e')
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部