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函数的实现要自己
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn