2016-04-04 17 views
0

我正在製作一個遊戲,將單元的數據存儲在JSON文件units.json中,我將其加載到preload()函數的遊戲中。我還有一個名爲setupUnitTextures()的函數,它會遍歷JSON中的一個列表並加載所有單元。問題是,調用此函數時出現錯誤,因爲JSON尚未加載。這裏是預載()函數:加載時的Phaser.io JSON回調

function preload() { 
    game.load.json('units', 'units.json'); 
    game.load.spritesheet('archer', 'assets/archer.png', 8, 8); 
    setupUnitTextures(); 
} 

我需要的是一種方法,有一個回調,所以加載JSON時,它通過調用setupUnitTextures()函數加載紋理。有沒有辦法做到這一點?

回答

1

我的建議,我認爲這也將是移相器發展的一般建議,將具有預加載後所需的任何資產的另一種狀態,你會然後預加載。

在某些模板中,這可能意味着有一個狀態,然後是一個狀態,然後是一個預加載器狀態。這通常是如何生成加載欄。

或者,您可能希望查看Phaser's asset pack example作爲從JSON文件加載大量資產的替代方法。

+1

+1這種方法。使用相位器狀態子系統,以便您可以擁有完整的引導狀態並執行所有重負載。 – Sombriks

+0

是的,工作,謝謝! – Zac

+0

太棒了。樂意效勞! –

0

您可以使用onLoadComplete事件:

game.load.onLoadComplete.add(setupUnitTextures, this); 
+0

好的,我會嘗試。 – Zac

+0

不,它不起作用。我認爲這個問題是因爲我在'create()'函數中使用了紋理。也許最好的辦法是有一個加載欄。有沒有辦法讓一個加載欄,所以只有在加載完成後調用create()函數? – Zac