Cocos2dx 小技巧(五)常用宏介绍

在第四篇介绍委托时,CC_SYNTHESIZE 这个宏出来show了一番后回去很是嘚瑟,于是他的兄弟姐妹们不干了,凭什么他能show而他们就不行?
为了公平起见,我赶紧也把其他的常用宏也拉出来溜溜。


Cocos2dx 小技巧(五)常用宏介绍_第1张图片
黄昏的埃菲尔

1.CC_SYNTHESIZE(varType, varName, funName):
声明一个成员变量以及getfunName,setfunName函数.函数声明和实现都有
这个直接用第四篇那些现成的。如下:

CC_SYNTHESIZE(MyDelegate*,delegator,Delegator);//这一步不理解的看下面   
//源码:   
#define CC_SYNTHESIZE(varType, varName, funName)\    
protected: varType varName;\    
public: virtual varType get##funName(void) const { return varName; }\    
public: virtual void set##funName(varType var){ varName = var; } 

看过源码后,我们把CC_SYNTHESIZE(MyDelegate*,delegator,Delegator);带进去试下,实际上与下面这几条代码是同样的意思。

protected:    
    MyDelegate* delegate;    
public:    
    virtual MyDelegate* getDelegator(void) const { return delegate};    
    virtual void setDelegator(MyDelegate* dele) { delegate = dele};   

2.CC_SYNTHESIZE_PASS_BY_REF(varType, varName, funName):
类似CC_SYNTHESIZE,不过getfunName返回的是引用。

3.CC_SYNTHESIZE_READONLY(varType, varName, funName):
声明一个成员变量以及getfunName函数,没有set函数。getfunName已经实现,其实现就是返回这个值。其实看到READONLY就知道它是只读的了。

4.CC_SYNTHESIZE_READONLY_PASS_BY_REF(varType, varName, funName):
类似CC_SYNTHESIZE_READONLY,不过getfunName返回的是引用

5.CC_PROPERTY(varType, varName, funName):
声明一个成员变量以及getfunName,setfunName函数.函数实现要自己做

举个例子介绍下:

//声明  
class HelloWorld : public cocos2d::Layer  
{  
    ...  
    CC_PROPERTY(int,m_hp,Hp);//声明一个类型为int型的成员变量m_hp以及getHp()、setHp(int hp_int)函数  
      
    ...  
}  
//定义  
int HelloWorld::getHp()  
{  
    //自己定义实现,看是要return m_hp,或者return m_hp*2; who care?  
}  
void HelloWorld::setHp(int hp_int)  
{  
    //同上,可以是 m_hp = hp_int,或者m_hp = hp_int*2;  who care too?  
}  

6.CC_PROPERTY_PASS_BY_REF(varType, varName, funName):
类似CC_PROPERTY,不过getfunName返回的是引用。

7.CC_PROPERTY_READONLY(varType, varName, funName):
又是一个只读,声明一个成员变量以及getfunName函数,没有set函数。getfunName函数的实现要自己做

8.CC_PROPERTY_READONLY_PASS_BY_REF(varType, varName, funName):
类似CC_PROPERTY_READONLY,不过getfunName返回的是引用。getfunName函数的实现要自己做

恩,就简单介绍到这里啦。嘿嘿。

尊重原创,转载请注明来源:http://blog.csdn.net/start530/article/details/23212943

你可能感兴趣的:(Cocos2dx 小技巧(五)常用宏介绍)