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

前端之家收集整理的这篇文章主要介绍了Cocos2dx 小技巧(五)常用宏介绍前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在第四篇介绍委托时, CC_SYNTHESIZE 这个宏出来show了一番后回去很是嘚瑟,于是他的兄弟姐妹们不干了,凭什么他能show而他们就不行?
为了公平起见,我赶紧也把其他的常用宏也拉出来溜溜。

1、CC_SYNTHESIZE(varType,varName,funName):声明一个成员变量以及getfunName,setfunName函数.函数声明和实现都有
这个直接用第四篇那些现成的
。如下:
  1. CC_SYNTHESIZE(MyDelegate*,delegator,Delegator);//这一步不理解的看下面
  2. //源码:
  3. #defineCC_SYNTHESIZE(varType,funName)\
  4. protected:varTypevarName;\
  5. public:virtualvarTypeget##funName(void)const{returnvarName;}\
  6. public:virtualvoidset##funName(varTypevar){varName=var;}
看过源码后,我们把CC_SYNTHESIZE(MyDelegate*,Delegator);带进去试下,实际上与下面这几条代码是同样的意思。
  1. protected:
  2. MyDelegate*delegate;
  3. public:
  4. virtualMyDelegate*getDelegator(void)const{returndelegate};
  5. 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函数.函数实现要自己做

举个例子介绍下:
  1. //声明
  2. classHelloWorld:publiccocos2d::Layer
  3. {
  4. ...
  5. CC_PROPERTY(int,m_hp,Hp);//声明一个类型为int型的成员变量m_hp以及getHp()、setHp(inthp_int)函数
  6. ...
  7. }
  8. //定义
  9. intHelloWorld::getHp()
  10. {
  11. //自己定义实现,看是要returnm_hp,或者returnm_hp*2;whocare?
  12. }
  13. voidHelloWorld::setHp(inthp_int)
  14. {
  15. //同上,可以是m_hp=hp_int,或者m_hp=hp_int*2;whocaretoo?
  16. }

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

猜你在找的Cocos2d-x相关文章