jszip地址:https://github.com/Stuk/jszip
jszip的.d.ts文件
jszip.d.ts.zip (2.5 KB)
如果是微信小游戏环境下遇到JSZip is not defined,在jszip.min.js文件最后添加;if(!window.JSZip){window.JSZip = module.exports;}
。
导入库
将jszip.min.js拖入到creator中,设置为插件。
解压
1.用zip工具压缩json配置。假设压缩名称为config.zip。将zip包拖到resources目录下
2.用cc.loader.load加载二进制格式的zip文件
let url = cc.url.raw('resources/config.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');
this.unzip(arrayBuffer);
}
};
oReq.send(null);
}
else {
this.unzip(zipData);
}
});
3.读取压缩包的内容
unzip(zipData) {
let newZip = new JSZip(); // 因为将jszip导入为插件,所以可以全局直接访问
newZip.loadAsync(zipData).then(zip=>{
zip.file('test.json').async('string').then(data=>{
let json = JSON.parse(data);
});
});
}