whatsnew

自作ゲーム My Works (indie game)

FairyBravers(フェアリーブレイバーズ)

コカトリスあたたかい

10秒アスレチック

きりかえスライドパズル アイちゃんver

珠音ちゃんと踊る迷路の山

きりかえスライドパズル珠音ちゃんver

ダブルピースキャッチコンテスト

異世界の保安官

熱湯!鍋奉行すん止め選手権

サラダにxxいれないで!

十倍返しの魔鏡(マジックミラー)

とりでの中のp.b.j.a.m

ドラゴン遺跡のディガー

Dangerous Space Transporter

マトリエックス MatoriEkkusu

にわとりFlyHigh!

おばけのこんにゃくピターン大作戦

CreatureSlotBattle~魔王の切り札~

跳ねる岩の洞窟 JumpingRockCave

ポテキャッチ PoteCatch

青汁ごくごく生放送

猫の日スロット222 NekoSlot222

豆まき陰陽師 MameMakiOnMyoJi

間違い探し プロ生ちゃんのトレジャーハント

DOT VIRUS SHOOTER ドットウイルスシューター

エレベータースロットガール ElevetorSlotGirl

パンプキンヘッドとお菓子の迷宮

タッチ!イカタコ Touch! Ika Tako

減量と時の部屋 Room of HimanTaurust

チョコゲット ChocolateGet

OpenTheBox~その箱を開けるとき~

ドローン1111

胡桃坂ハロウィンパーティ

コロッケ・オン・ザ・キャベツ

デスチェリー農場


轟け!爆音機!

Levitation Girl

割引狩 WaribikiHunter

お団子キャノン

団子大砲

くの一宅配便

CandyMaze

BLK2048

マッハこうもり

AdSenseBlogHead

2014年7月16日水曜日

JSON のオブジェクトを ID でリンクする(5)

JSON のオブジェクトを ID でリンクする(4) - SakuraCrowd’s blog の続きです。


jsonId を利用しようとしていた仕様が変わってしまい、必要なくなったのでいったん保留します。


とはいっても、 {"$ref":"id1"} などの ID から、その ID を持つオブジェクトの参照への変換、逆変換の簡単なテストをクリアする実装もできたので、記念として gist にしました。長いので最後にはっときます。


 


jsonId の実装について


gist のコメントに書いてありますが、循環参照は jsonId の置換では問題にならないのでエラー検出はしないことにしました。


JSONPath でルートの "$" のときに jsonPath.eval の第一引数を対象にしたかったのですが、空の配列が返されてしまっていたので、その部分だけ条件文で特別に処理しました。


"$[0]" などはルート配列の1番目の要素の参照を取得できるので、 jsonPath.eval(...)[0]を使っています。


反省点


jsonId を使わない仕様をなぜ最初に気づけなかったか。


それは、なるべく作成する機能に汎用性を持たせたいという悪いくせがでたためだと思います。


tmx のプロパティの編集がやりづらいので、他の json ファイルに細かい設定を書いてそれを参照させようというのがきっかけでした。


しかし、実際に自分が必要とする設定は tmx のプロパティに CSV などで4つくらいのパラメータを書くだけですむものでした。


それがなぜか、もっと複雑なものも簡単に設定したいというあいまいな仕様になってしまいました。


実際に使うデータを処理できるだけで十分だということを念頭において仕様を考えるようにしたいです。


 


cocos2d-js-3.0-rc0 


が使えるようになりました(∩´∀`)∩ワーイ


setup.py をいちいち管理者権限で呼び出すのが面倒なのでバッチファイルを作りました。


2.2 のころと違って html を起動するだけというわけではなく、 cocos コマンドで実行するのが微妙に面倒ですが、ノードの親子関係に依存しないで奥行きを設定できたりするのが便利です。


project.json の module に extensions を追加しないと使えないのがわからず苦戦しましたが、ScrollView で簡単にスクロールできるようになってよかったです。


 



jsonId の実装とテストケース


0 件のコメント:

コメントを投稿