2016-04-04 1 views
0

私は、ユニットのデータをユニットファイルの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()関数を呼び出してテクスチャをロードします。これを行う方法はありますか?

あなたが onLoadCompleteイベントを使用することができます

答えて

1

私の推薦を、次にプリロードします。

テンプレートによっては、のブートの状態、次にのプリローダの状態があることがあります。これは、通常、ロードバーの生成方法です。

または、Phaser's asset pack exampleを参照して、JSONファイルから多数のアセットを読み込む方法があります。

+1

+1このアプローチ。フェイザー・ステート・サブシステムを使用すると、ブート状態全体を保持し、そこにすべての負荷をかけることができます。 – Sombriks

+0

うん、それは働いて、ありがとう! – Zac

+0

素晴らしいです。助けてうれしい! –

0

:私はあなたがよということ、また、フェイザー開発のための一般的な推奨事項となり、後に必要な資産をプリロード別の状態を持っているだろうと思う

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

これを試してみます。 – Zac

+0

いいえ、動作しません。問題は、 'create()'関数でテクスチャを使うからです。おそらく、これを行う最善の方法はローディングバーを持つことです。読み込みバーを作成する方法があるので、読み込みが完了したらcreate()関数が呼び出されるだけですか? – Zac

関連する問題