使用js.zip加载zip中的所有图像

时间:2017-06-22 14:22:13

标签: javascript p5.js zip.js

我正在编写一个带有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分钟内没有任何附加物,然后,所有图像都会在不到几秒的时间内加载

那么,是否有可能改进该代码?

谢谢!

0 个答案:

没有答案