Cocos2dx创建Class相关宏定义

Cocos2dx创建Class相关宏定义,第1张

概述1、CC_SYNTHESIZE(varType, varName, funName): 声明一个成员变量以及getfunName,setfunName函数,函数声明和实现都有,如下: CC_SYNTHESIZE(MyDelegate*,delegator,Delegator);//这一步不理解的看下面 //源码: #define CC_SYNTHESIZE(varType, varNam

1、CC_SYNTHESIZE(varType,varname,funname)

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

CC_SYNTHESIZE(MyDelegate*,delegator,Delegator);//这一步不理解的看下面  //源码:  #define CC_SYNTHESIZE(varType,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);带进去试下,实际上与下面这几条代码是同样的意思

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,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函数.函数实现要自己做

举个例子介绍下:

//声明  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,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函数的实现要自己做。

9、CREATE_FUNC(classname) :创建class的create方法:

这里直接贴出这个的宏定义,其主要意思就是先new、new完后是通过init初始化,而不是构造函数。如果init返回false,也就是失败。则释放对象返回NulL。否则,把其加入自动管理的内存池,然后返回该对象的指针。

#define CREATE_FUNC(__TYPE__) \static __TYPE__* create() \{ \    __TYPE__ *pRet = new __TYPE__(); \    if (pRet && pRet->init()) \    { \        pRet->autorelease(); \        return pRet; \    } \    else \    { \       delete pRet; \       pRet = NulL; \       return NulL; \   } \}
总结

以上是内存溢出为你收集整理的Cocos2dx创建Class相关宏定义全部内容,希望文章能够帮你解决Cocos2dx创建Class相关宏定义所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1079842.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存