Phaser 3:在调用 Scene.preload() 之前完成加载 json
Phaser 3: Finish loading json before Scene.preload() gets called
我想在JSON文件中描述我的场景,然后根据那个JSON文件的内容预加载图像等。所以JSON文件的内容需要在进入preload之前已经全部加载完毕。我不知道该怎么做。我创建了一个最小的、可重现的 jsfiddle,它在 prepreload = true
时记录 preload: undefined
。
prepreload = false
我得到 create: [object Object]
.
var prepreload = true
var config = { scene: { init: init, preload: preload, create: create } }
var game = new Phaser.Game(config)
function init(config) {
if (prepreload) {
this.load.json('scenedata', 'scene.json');
this.load.start();
}
}
function preload () {
if (prepreload)
console.log(this.cache.json.get("scenedata"));
else
this.load.json('scenedata', 'scene.json');
}
function create () {
if (!prepreload)
console.log(this.cache.json.get("scenedata"));
}
知道如何根据 JSON 文件的内容预加载图像 - 理想情况下都在场景 class 内,而不是在外部执行并将其传递到 init
方法或类似方法。
SettingsConfig
可用于 - 在进入 init
方法时,pack
下列出的文件已经加载。
这是如何完成的(Phaser 3.55.2):
var config = {
scene: {
init: init,
preload: preload,
create: create,
pack: {
"files": [
{ type: 'json', key: 'scene', url: 'scene.json' }
}
}
}
}
var game = new Phaser.Game(config)
这里有一个稍微不同的变体,使用 TypeScript:
export class TestScene extends Phaser.Scene {
constructor() {
super({ pack: {
"files": [ { type: 'json', key: 'scene', url: 'scene.json' }
我想在JSON文件中描述我的场景,然后根据那个JSON文件的内容预加载图像等。所以JSON文件的内容需要在进入preload之前已经全部加载完毕。我不知道该怎么做。我创建了一个最小的、可重现的 jsfiddle,它在 prepreload = true
时记录 preload: undefined
。
prepreload = false
我得到 create: [object Object]
.
var prepreload = true
var config = { scene: { init: init, preload: preload, create: create } }
var game = new Phaser.Game(config)
function init(config) {
if (prepreload) {
this.load.json('scenedata', 'scene.json');
this.load.start();
}
}
function preload () {
if (prepreload)
console.log(this.cache.json.get("scenedata"));
else
this.load.json('scenedata', 'scene.json');
}
function create () {
if (!prepreload)
console.log(this.cache.json.get("scenedata"));
}
知道如何根据 JSON 文件的内容预加载图像 - 理想情况下都在场景 class 内,而不是在外部执行并将其传递到 init
方法或类似方法。
SettingsConfig
可用于 - 在进入 init
方法时,pack
下列出的文件已经加载。
这是如何完成的(Phaser 3.55.2):
var config = {
scene: {
init: init,
preload: preload,
create: create,
pack: {
"files": [
{ type: 'json', key: 'scene', url: 'scene.json' }
}
}
}
}
var game = new Phaser.Game(config)
这里有一个稍微不同的变体,使用 TypeScript:
export class TestScene extends Phaser.Scene {
constructor() {
super({ pack: {
"files": [ { type: 'json', key: 'scene', url: 'scene.json' }