cocos2d-x游戏开发中CREATE_FUNC和NODE_FUNC概述

来源:互联网 发布:mac在美国多少钱一支 编辑:程序博客网 时间:2024/04/30 10:14

此博客基于Cocos2d-2.1rc0-x-2.1.3  API

NODE_FUNC(__TYPE__)这个宏在引擎内部被定义。重写node();

CREATE_FUNC(__TYPE__)此宏与上面的相类似,重写create()

另外在2.x版本之前是使用SCENE_NODE_FUNC(HelloWorldScene);(或LAYER_NODE_FUNC(Layer));

源码说明

[cpp] view plaincopy
  1. #define CREATE_FUNC(__TYPE__) \  
  2. static __TYPE__* create() \  
  3. { \  
  4.     __TYPE__ *pRet = new __TYPE__(); \  
  5.     if (pRet && pRet->init()) \  
  6.     { \  
  7.         pRet->autorelease(); \  
  8.         return pRet; \  
  9.     } \  
  10.     else \  
  11.     { \  
  12.         delete pRet; \  
  13.         pRet = NULL; \  
  14.         return NULL; \  
  15.     } \  
  16. }  

[cpp] view plaincopy
  1. #define NODE_FUNC(__TYPE__) \  
  2. CC_DEPRECATED_ATTRIBUTE static __TYPE__* node() \  
  3. { \  
  4.     __TYPE__ *pRet = new __TYPE__(); \  
  5.     if (pRet && pRet->init()) \  
  6.     { \  
  7.         pRet->autorelease(); \  
  8.         return pRet; \  
  9.     } \  
  10.     else \  
  11.     { \  
  12.         delete pRet; \  
  13.         pRet = NULL; \  
  14.         return NULL; \  
  15.     } \  
  16. }  
从中可以看出

主要是new一个实例,调用init(),并将它加入autorelease,也就是所有由node()函数得来的指针,都不需要手动的释放(除非自己想要)。