Cocos Creator 加载zip文件(将json表压缩成zip)

const { ccclass, property } = cc._decorator;

@ccclass
export default class Helloworld extends cc.Component {

    m_cfgTableMap:any = {};

    start() {

        this.m_cfgTableMap = {};

        this.loadZip();


    }

    loadZip() {
        let self = this;
        let url = cc.url.raw('resources/configs.zip');
        cc.loader.load({ url: url, type: "binary" }, (err: Error, zipData: ArrayBuffer) => {
            //2.1.3在安卓平台下会出现load不到资源的情况
            if (err) {
                let httpUrl = `资源服务地址${url}`;
                console.log('loadConfigZip httpUrl: ', httpUrl);
                let oReq = new XMLHttpRequest();
                oReq.open("GET", httpUrl, true);
                oReq.responseType = "arraybuffer";

                oReq.onload = function (oEvent) {
                    let arrayBuffer = oReq.response; // 注意:不是oReq.responseText
                    if (arrayBuffer) {
                        console.log('LoadConfig::unzip 0');
                        self.unzip(arrayBuffer);
                    }
                };
                oReq.send(null);
            }
            else {
                console.log("unzip unzip");
                this.unzip(zipData);
            }
        });
    }

    unzip(zipData) {
        let self = this;
        let newZip = new JSZip(); // 因为将jszip导入为插件,所以可以全局直接访问
        newZip.loadAsync(zipData).then(zip=>{
            // console.log(zip);
            let fileList = zip.files;
            for(let filename in fileList){
                zip.file(filename).async('string').then(data=>{
                    let json = JSON.parse(data);
                    console.log(JSON.stringify(json));
                    self.m_cfgTableMap[filename] = json;
                });
            }

        });
    }

}

参考链接:https://forum.cocos.org/t/jszip-zip/92462

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值