此博客基于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));
源码说明
- #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; \
- } \
- }
- #define NODE_FUNC(__TYPE__) \
- CC_DEPRECATED_ATTRIBUTE static __TYPE__* node() \
- { \
- __TYPE__ *pRet = new __TYPE__(); \
- if (pRet && pRet->init()) \
- { \
- pRet->autorelease(); \
- return pRet; \
- } \
- else \
- { \
- delete pRet; \
- pRet = NULL; \
- return NULL; \
- } \
- }
主要是new一个实例,调用init(),并将它加入autorelease,也就是所有由node()函数得来的指针,都不需要手动的释放(除非自己想要)。