Roll Play My Life

= ryuji_026

cocos2d-xで次のシーンにデータを受け渡す処理【毎日更新その035】

[cocos2d]の使い方とか超雑多なメモ | 学習B5デスノートONE-UP Engineers' Blog: Cocos2d-xで使用しているマクロ群などを参考にしました。ありがとうございます。


オープニングのシーンでタップしたボタンによって次のシーンの動きをちょっと変えたい

今回はゲームモードの変更を行いたかったです。

ほとんどのシステムは同じで、一部機能のON/OFFを切り替えるような感じ。

CCScene* scene = GameScene::scene();
CCArray* children = scene->getChildren();
GameScene* layer = dynamic_cast<GameScene*>( children->objectAtIndex(0) );
layer->setGameMode(SCOREATACK);
CCDirector::sharedDirector()->replaceScene( CCTransitionMoveInT::create(0.5, scene) );

シーンを作るときにシーンにaddChild()するレイヤーはobjectAtIndex(0)で掴めるそうです。

objectAtIndex()はCCArray*のメソッドで、シーンの子はgetChildren()で取得できるので、CCArray*で使えます。

そうしてレイヤーを掴んだ後は(キャストしなくてはいけない)publicな関数や変数を触りたい放題です。

protectedメンバを触ろうとすると

'xxxx' is a protected member of 'GameScene'

みたいに教えてくれます。

ONE-UP Engineers' Blog: Cocos2d-xで使用しているマクロ群の人が作ってたマクロが便利そうなので、もっと上達したらそういうこともしていきたいです。


ところで

大人のプログラマは例えば

CCScene* pScene;

でポインタだからp,みたいに命名規則がしっかりしてますが、いったいどのくらいまでしっかりした方がいいんでしょうか?

たとえばメンバ変数だから'm_xxxx'にするとかはわかるんですけど、シーンなんていっつもポインタだし、うーーーんといった感じです。