寒風的Cocos之旅之C++篇REATE_FUNC宏的解析

前端之家收集整理的这篇文章主要介绍了寒風的Cocos之旅之C++篇REATE_FUNC宏的解析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

对cocos有了解的人,都应该对CREATE_FUNC这个宏不陌生,


那么今天寒風为大家解析一下这个函数


首先我们看看里边的源代码


  1. <span style="font-family:SimHei;">/**
  2. * define a create function for a specific type,such as CCLayer
  3. * @__TYPE__ class type to add create(),such as CCLayer
  4. */
  5. #define CREATE_FUNC(__TYPE__) \
  6. static __TYPE__* create() \
  7. { \
  8. __TYPE__ *pRet = new __TYPE__(); \
  9. if (pRet && pRet->init()) \
  10. { \
  11. pRet->autorelease(); \
  12. return pRet; \
  13. } \
  14. else \
  15. { \
  16. delete pRet; \
  17. pRet = NULL; \
  18. return NULL; \
  19. } \
  20. } </span>

下边是我做的一款贪吃蛇的游戏,代码如下:

  1. SnakeBody*SnakeBody::create(int type)
  2. {
  3. SnakeBody *pRet = new SnakeBody();
  4. if (pRet && pRet->init(type))
  5. {
  6. pRet->autorelease();
  7. return pRet;
  8. }
  9. else
  10. {
  11. delete pRet;
  12. pRet = NULL;
  13. return NULL;
  14. }
  15. }
我们可以看到在宏的下面定义了一个create()函数返回的类型就是宏带入参


数__TYPE__指针类型.那create函数里,它执行了类的构造函数,执行了

init()初始化


函数,最后又设置创建出的对象为自动释放内存,大大缩减了开发时间.

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