Cocos2dx常用宏必须知道

本文深入解析Cocos2d-x框架中CC_SYNTHESIZE宏及其衍生功能,如CC_SYNTHESIZE_PASS_BY_REF、CC_SYNTHESIZE_READONLY、CC_PROPERTY等,阐述其在成员变量声明与访问控制方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、CC_SYNTHESIZE(varType, varName, funName)

声明一个成员变量以及getfunName,setfunName函数,函数声明和实现都有,如下:

1
2
3
4
5
6
7
8
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);带进去试下,实际上与下面这几条代码是同样的意思。

1
2
3
4
5
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函数.函数实现要自己做

举个例子介绍下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//声明 
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函数的实现要自己做

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值