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'にするとかはわかるんですけど、シーンなんていっつもポインタだし、うーーーんといった感じです。