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

一篇积累一点,要求不多,一点点就可以。

---------------------

话说前天是小米的米粉节,因为缺少个安卓机,打算抢个最新的红米note来玩玩,谁知道note没抢到,红米倒是抢到了三台。我这人品到底是好还是不好呢?

----------------------

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

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)