Cocos2dx常用宏必须知道

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、付费专栏及课程。

余额充值