引擎版本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
