モーリーのメモ

アプリ開発等(プログラミング、CG作成)、興味を持ったことを実践してまとめるブログです。

モーリーのメモ

JSONファイルの読み込み:Cocos Creator

 JSONファイルの読み込みは、『Cocos Studio2』の時とそんなに変わらないだろうと思っていたのですが、意外に苦戦しました。
 実質的には、JSONファイルの読み込みに苦戦したというよりはJSONファイルのパスの渡し方に苦戦しました。

 まだ、完全に理解した訳ではありませんが、とりあえず読み込めるようになったのでメモ。

使用環境

 私が使用している環境です。

『cc.loader.load()』で読み込む

 『Cocos Studio2』では、『cc.loader』クラスに『loadJSON()』というJSONファイル用のメソッドがあるのですが、『Cocos Creator』では、『load()』でOKです。種類を(たぶん拡張子で)判別して処理してくれます。

使用例

 『assets/resourecs/data.json』ファイルを読み込む例です。

    onLoad: function () {
        cc.loader.load(cc.url.raw("resources/data.json"), function(error, result) { // JSONファイルからデータを読み込む
            if (error !== null) return; // エラーがない場合、処理を抜ける
            this._dataJson = result; // JSONデータを取得
        });
    },

JSONファイルは『resources』フォルダ内に置く

 ここに引っかかったのですが、JSONファイルは必ず『assets/resources』フォルダ内に置きます。
 『assets/resources/data/data.json』みたいにサブフォルダを置くのは構いません。

『cc.url.raw()』

 『cc.url.raw()』は『resources』フォルダ内のアセットのurlを返すメソッドです。
 『cc.url.raw("resources/data.json")』は、
 『"res/raw-assets/resources/data.json"』を返します。

他のフォルダを試すとエラー

 JSONファイルを『assets/Data/data.json』のように他のフォルダに置いて『load()』に渡すと、エラーが発生して『Sorry can not load "Data/challenge.json" because it is not placed in the "resources" folder.』と、『resources』フォルダに置くように怒られます。
 『resources』フォルダは、特別なフォルダみたいです。

あとがき

 パスの指定方法を適当に試しましたが『404 (Not Found)』の連発でした。
 しかし、調べたら指定方法以前に『resources』フォルダに置かないとだめでした。
 公式サイトのForumで答えを見つけました。
 http://discuss.cocos2d-x.org/t/solved-loading-a-json-file-in-a-cocos-creator-project/28632
 唯一の方法かはわかりません。