シーン間で共通化しているもの、例えばゲーム画面にアクセスしたい場合、
// AppDelegate.h #include "cocos2d.h" USING_NS_CC; class AppDelegate : private cocos2d::CCApplication { CCNode *gameNode; // ゲーム画面 void loadGameNode(); public: AppDelegate(); virtual ~AppDelegate(); virtual bool applicationDidFinishLaunching(); virtual void applicationDidEnterBackground(); virtual void applicationWillEnterForeground(); CCNode* getGameNode(); };
// AppDelegate.cpp void AppDelegate::loadGameNode() { CCNodeLoaderLibrary* ccNodeLoaderLibrary = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary(); ccNodeLoaderLibrary->registerCCNodeLoader("GameScene", GameSceneLoader::loader()); CCBReader* ccbReader = new CCBReader(ccNodeLoaderLibrary); gameNode = ccbReader->readNodeGraphFromFile("GameScene.ccbi"); gameNode->retain(); // 勝手に解放されないようにしてあげる } // ゲーム画面を取得する CCNode* AppDelegate::getGameNode() { return gameNode; }
以下のような感じでアクセスする。
AppDelegate *appDelegate = (AppDelegate*)CCApplication::sharedApplication(); GameScene* game = appDelegate->getGameNode();
他にもっといい方法があるかもしれない、、、がまあ探り探りってことで。