引擎版本3.0.6

教程目录
一 为什么要用jszip
二 如何使用jszip
    2.1 下载jszip库
    2.2 导入jszip库
    2.3 加载和解压zip代码
三 Demo源码下载

一 为什么要用jszip
在游戏中有大量配置文件时,为了减少加载次数和传输量,将文件打包成zip,在egret中加载并解压获取数据。

在中大型游戏,不可避免有大量的游戏配置文件。

【咸鱼教程】JsZip压缩与解压教程 

打开项目目录下egretProperties.json,将jszip添加到配置文件中

[AppleScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
"modules": [
    {
      "name": "egret"
    },
    {
      "name": "game"
    },
    {
      "name": "tween"
    },
    {
      "name": "res"
    },
        {
                "name": "jszip",
                "path": "jszip"
        }
  ]



添加完成后,记得编译一次引擎。
【咸鱼教程】JsZip压缩与解压教程 

2.3  加载和解压zip代码

[AppleScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
//加载zip
RES.getResByUrl("resource/assets/assets.zip", function(data){
              //解压数据
              var zip = new JSZip(data);
               
              //读取技能数据
              var skillJson = JSON.parse(zip.file("skill.json").asText());
              console.log(skillJson);
               
},this, RES.ResourceItem.TYPE_BIN);



更新一个解压图片的:
参考的教程: https://segmentfault.com/a/1190000002669262

[AppleScript] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
//读取图片
 var buffer = zip.file("fire.png").asArrayBuffer();
var base64 = this.arrayBufferToBase64(buffer);
base64 = "data:image/png;base64," + base64;
               
var img:eui.Image = new eui.Image();
img.source = base64;
this.addChild(img);



[AppleScript] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
private arrayBufferToBase64( buffer ) { 
    var binary = ''; 
    var bytes = new Uint8Array( buffer )
    var len = bytes.byteLength; 
    for (var i = 0; i < len; i++) { 
         binary += String.fromCharCode( bytes[ i ] )
    } 
    return window.btoa( binary )
}





三 Demo下载

https://files-cdn.cnblogs.com/files/gamedaybyday/Egret3.0.6_JSZipExample.7z

相关文章:

  • 2021-10-02
  • 2021-11-26
  • 2021-09-15
  • 2021-05-08
  • 2021-08-27
  • 2021-11-03
  • 2021-04-10
猜你喜欢
  • 2022-12-23
  • 2021-07-16
  • 2022-02-21
  • 2021-08-13
  • 2021-12-06
  • 2022-12-23
  • 2021-06-23
相关资源
相似解决方案