Cocos2d-x常用宏说明
时间:2021-07-01 10:21:17
帮助过:23人阅读
1、CC_SYNTHESIZE(varType, varName, funName):声明一个成员变量以及getfunName,setfunName函数.函数声明和实现都有 这个直接用第四篇那些现成的 。如下: [cpp] view plaincopy CC_SYNTHESIZE(MyDelegate*,delegator,Delegator); //这一步不理解的看下面
1、CC_SYNTHESIZE(varType, varName, funName):声明一个成员变量以及getfunName,setfunName函数.函数声明和实现都有
这个直接用第四篇那些现成的。如下:
[cpp] view
plaincopy
-
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);带进去试下,实际上与下面这几条代码是同样的意思。
[cpp] view
plaincopy
-
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函数.函数实现要自己做
举个例子介绍下:
[cpp] view
plaincopy
-
//声明
-
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函数的实现要自己