引擎版本3.0.6
教程目录
一 为什么要用jszip
二 如何使用jszip
2.1 下载jszip库
2.2 导入jszip库
2.3 加载和解压zip代码
三 Demo源码下载
一 为什么要用jszip
在游戏中有大量配置文件时,为了减少加载次数和传输量,将文件打包成zip,在egret中加载并解压获取数据。
在中大型游戏,不可避免有大量的游戏配置文件。
为了减少加载次数和传输量,我们事先将这些文件压缩打包成zip, 然后在egret中加载,并使用jszip库解压获取其中的数据。
二 如何使用jszip
2.1 下载jszip库
官方gitbug下载地址:https://github.com/egret-labs/egret-game-library
2.2 导入jszip库
将下载的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" } ] |
添加完成后,记得编译一次引擎。
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 base 64 = this.arrayBufferToBase 64 ( buffer ) ; base 64 = "data:image/png;base64," + base 64 ; var img : eui.Image = new eui.Image ( ) ; img.source = base 64 ; this.addChild ( img ) ; |
[AppleScript] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
|
private arrayBufferToBase 64 ( buffer ) { var binary = ''; var bytes = new Uint 8 Array ( buffer ) ; var len = bytes.byteLength; for ( var i = 0 ; i < len; i + + ) { binary + = String.fromCharCode ( bytes[ i ] ) ; } return window .btoa ( binary ) ; } |
https://files-cdn.cnblogs.com/files/gamedaybyday/Egret3.0.6_JSZipExample.7z