2013-03-19 80 views

回答

0

您可以使用已在cocos2d-x中定義的宏。

#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; \ 
    } \ 
} 

#define CC_SAFE_DELETE(p)   do { if(p) { delete (p); (p) = 0; } } while(0) 
#define CC_SAFE_RELEASE(p)   do { if(p) { (p)->release(); } } while(0) 
#define CC_SAFE_RETAIN(p)   do { if(p) { (p)->retain(); } } while(0) 

例如:

CC_SYNTHESIZE_RETAIN(CCLayer*, m_layer, Layer); 

然後你可以指定m_layersetLayer(new_layer);,並與getLayer()得到它。

而且這個宏只適用於對象擴展CCObject

+1

可以請你解釋一下這個簡單的例子或者什麼的,我們如何在cocos2d-x中完全使用它。 – 2013-09-18 07:18:27