【解決済】別のマップのデータを読み込む方法

アバター
ぶちょー
記事: 40
登録日時: 2016年8月25日(木) 12:15
連絡を取る:

【解決済】別のマップのデータを読み込む方法

投稿記事by ぶちょー » 2017年2月11日(土) 00:12

プラグインを制作していて、「こうかな?」と思う方法で上手くいかなかったので、質問です。

コード: 全て選択

var mapId = 1;
var filename = 'Map%1.json'.format(mapId.padZero(3));
DataManager.loadDataFile('mapData', filename);

これで、 mapData にマップID1のデータが入ると思っているのですが、
次の行に console.log(mapData); とやると、 null が返ってきます。

そもそものやり方が間違っているのか、何か手順が足りないのか、分かる方いましたら、ご教示ください。
最後に編集したユーザー ぶちょー on 2017年2月11日(土) 09:48 [ 編集 1 回目 ]

---------------------------------------------------------------------------------------
[Homepage] http://nyannyannyan.bake-neko.net/
  RGSS3/RGSS2/Pluginの配布を行っています。
  HPでのみ配布しているPluginもあります。
[Blog] http://kazaricat.blog.fc2.com/
  主にゲーム製作の進捗。
[Plugin]
  サンプルに「ゆるドラシル」を使用します(`・ω・´)
  http://yurudora.com/tkool/
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: 別のマップのデータを読み込む方法

投稿記事by トリアコンタン » 2017年2月11日(土) 01:02

お疲れさまです。

処理そのものには大きな問題はありません。

にもかかわらずmapDataがnullなのは、「JavaScriptではデータのロードは非同期で行われる」という仕様のせいです。
つまり下記の処理が終わって結果が返ってきた段階ではまだロード中の状態なのです。

なのでロード処理実行後は、ロードが完了しているか1フレームごとに確認して、
ロードが完了したら完了後の処理を実行するようにします。

ロード中かどうかを確認するための処理の実装方法は、「DataManager.isMapLoaded」が参考になるかと思います。
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
アバター
ぶちょー
記事: 40
登録日時: 2016年8月25日(木) 12:15
連絡を取る:

Re: 別のマップのデータを読み込む方法

投稿記事by ぶちょー » 2017年2月11日(土) 09:48

>>トリアコンタン様
ありがとうございます。

ロードに時間がかかるのではと思い、while文でぐるぐる回したら無限ループに陥ってしまっていました。
ご教示いただいたように、1フレーム毎にロード完了をチェックし、ロード完了後に処理をすることで解決することができました。
---------------------------------------------------------------------------------------
[Homepage] http://nyannyannyan.bake-neko.net/
  RGSS3/RGSS2/Pluginの配布を行っています。
  HPでのみ配布しているPluginもあります。
[Blog] http://kazaricat.blog.fc2.com/
  主にゲーム製作の進捗。
[Plugin]
  サンプルに「ゆるドラシル」を使用します(`・ω・´)
  http://yurudora.com/tkool/

“MV:質問” へ戻る