我正在编写一个带有p5js的平铺地图的小游戏。
当游戏开始时,下载包含所有图形的zip文件,然后该zip文件中的所有图像都用zip.js解压缩并加载p5js。 我正是这样做的:
Zip.js初始化:
zip.workerScripts = {
deflater: ['libs/z-worker.js', 'libs/pako.min.js', 'libs/pako/codecs.js'],
inflater: ['libs/z-worker.js', 'libs/pako.min.js', 'libs/pako/codecs.js']
};
阅读下载的zip文件:
this.onDlFinished = function(file) {
zip.createReader(new zip.BlobReader(file), function(zipReader) {
zipReader.getEntries(function(entries) {
context.unzipEntries(entries, context);
});
}, function() {
console.log("Error while loading zipfile");
});}
}
遍历zip文件中的所有条目:
this.unzipEntries = function(entries, context) {
//HERE TILECOUNT = 5000
for (i=0; i < this.tileCount; i++) {
context.unzipEntry(entries[i], context);
}
}
最后阅读并加载每个条目:
this.unzipEntry = function(entry, context) {
var pos = eval(entry.filename.replace(".png", ""));
entry.getData(new zip.BlobWriter(), function(data) {
url = window.URL.createObjectURL(data)
console.log(url);
context.tiles[pos] = loadImage(url, function() {
context.total += 1;
window.URL.revokeObjectURL(url);
if (context.total == context.tileCount) {
$('#startLoading').modal('close');
context.loaded = true;
}
})
})
}
Zip文件重量:2.1 mB
问题在于需要这么多次...... 超过1.5分钟内没有任何附加物,然后,所有图像都会在不到几秒的时间内加载
那么,是否有可能改进该代码?
谢谢!