#ifndef __CCCONTROLSCENE_H__ #define __CCCONTROLSCENE_H__ #include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_NS_CC_EXT; //创建层的同时赋值标题 #define CONTROL_SCENE_CREATE_FUNC(controlScene) public: static CCScene* sceneWithTitle(const char * title) { CCScene* pScene = CCScene::create(); controlScene* controlLayer = new controlScene(); if (controlLayer && controlLayer->init()) { controlLayer->autorelease(); controlLayer->getSceneTitleLabel()->setString(title); pScene->addChild(controlLayer); } else { CC_SAFE_DELETE(controlLayer); } return pScene; } //创建访问器,get和set #define CC_SYNTHESIZE_RETAIN(varType, varName, funName) private: varType varName; public: virtual varType get##funName(void) const { return varName; } public: virtual void set##funName(varType var) { if (varName != var) { CC_SAFE_RETAIN(var); CC_SAFE_RELEASE(varName); varName = var; } } class CCControlScene : public CCLayer { public: CCControlScene(); ~CCControlScene(); bool init(); // Menu Callbacks void toExtensionsMainLayer(CCObject* sender); void previousCallback(CCObject* sender); void restartCallback(CCObject* sender); void nextCallback(CCObject* sender); /** Title label of the scene. */ CC_SYNTHESIZE_RETAIN(CCLabelTTF*, m_pSceneTitleLabel, SceneTitleLabel) CONTROL_SCENE_CREATE_FUNC(CCControlScene); }; #endif /* __CCCONTROLSCENE_H__ */
//删除指针,并赋值为空 #define CC_SAFE_RELEASE_NULL(p) do { if(p) { (p)->release(); (p) = 0; } } while(0) CCControlScene::~CCControlScene() { CC_SAFE_RELEASE_NULL(m_pSceneTitleLabel); }