为了公平起见,我赶紧也把其他的常用宏也拉出来溜溜。
1、CC_SYNTHESIZE(varType,varName,funName):声明一个成员变量以及getfunName,setfunName函数.函数声明和实现都有
这个直接用第四篇那些现成的。如下:
- CC_SYNTHESIZE(MyDelegate*,delegator,Delegator);//这一步不理解的看下面
- //源码:
- #defineCC_SYNTHESIZE(varType,funName)\
- protected:varTypevarName;\
- public:virtualvarTypeget##funName(void)const{returnvarName;}\
- public:virtualvoidset##funName(varTypevar){varName=var;}
- protected:
- MyDelegate*delegate;
- public:
- virtualMyDelegate*getDelegator(void)const{returndelegate};
- virtualvoidsetDelegator(MyDelegate*dele){delegate=dele};
2、CC_SYNTHESIZE_PASS_BY_REF(varType,funName):类似CC_SYNTHESIZE,不过getfunName返回的是引用。
3、CC_SYNTHESIZE_READONLY(varType,funName):声明一个成员变量以及getfunName函数,没有set函数。getfunName已经实现,其实现就是返回这个值。其实看到READONLY就知道它是只读的了。
4、CC_SYNTHESIZE_READONLY_PASS_BY_REF(varType,funName):类似CC_SYNTHESIZE_READONLY,不过getfunName返回的是引用
5、CC_PROPERTY(varType,funName):声明一个成员变量以及getfunName,setfunName函数.函数实现要自己做
举个例子介绍下:
- //声明
- classHelloWorld:publiccocos2d::Layer
- {
- ...
- CC_PROPERTY(int,m_hp,Hp);//声明一个类型为int型的成员变量m_hp以及getHp()、setHp(inthp_int)函数
- ...
- }
- //定义
- intHelloWorld::getHp()
- {
- //自己定义实现,看是要returnm_hp,或者returnm_hp*2;whocare?
- }
- voidHelloWorld::setHp(inthp_int)
- {
- //同上,可以是m_hp=hp_int,或者m_hp=hp_int*2;whocaretoo?
- }
6、CC_PROPERTY_PASS_BY_REF(varType,funName):类似CC_PROPERTY,,不过getfunName返回的是引用。
7、CC_PROPERTY_READONLY(varType,funName):又是一个只读,声明一个成员变量以及getfunName函数,没有set函数。getfunName函数的实现要自己做
8、CC_PROPERTY_READONLY_PASS_BY_REF(varType,funName):类似CC_PROPERTY_READONLY,不过getfunName返回的是引用。getfunName函数的实现要自己做
恩,就简单介绍到这里啦。嘿嘿。
尊重原创,转载请注明来源:http://blog.csdn.net/start530/article/details/23212943