任何人都可以解释我为什么需要在Cocos2dx中使用CREATE_FUNC?我在HelloWorld示例中看到了它并且不清楚它.请告诉我更多细节.谢谢.
Los*_*aty 15
我们不需要使用它,它是一个帮助宏,它扩展到这个:
/**
* define a create function for a specific type, such as CCLayer
* @__TYPE__ class type to add create(), such as CCLayer
*/
#define CREATE_FUNC(__TYPE__)
static __TYPE__* create()
{
__TYPE__ *pRet = new(std::nothrow) __TYPE__();
if (pRet && pRet->init())
{
pRet->autorelease();
return pRet;
}
else
{
delete pRet;
pRet = NULL;
return NULL;
}
}
Run Code Online (Sandbox Code Playgroud)
它基本上create()为您的类型"写" 方法,并调用您的init()实现.它的主要目的是调用autorelease()方法,这样你就不会忘记它,如果你自己编写的话create().它可能看起来不多,但它需要你一点点.
提示:在大多数IDE中,您可以Control + Click(在MAC上执行命令)对函数和宏等代码进行操作,IDE将带您进入.
如果有些事情仍然不清楚,请告诉我.
编辑:来自评论的问题:具体来说,如果我想编写一个CCCarSprite,它扩展自CCSprite并具有更多功能,如run,crash ......我是否需要调用CREATE_FUNCTION(CCCarSprite)?
不,你没有.你要做的是调用一个超类init…方法.这最好从您的构造函数或您init()的子类中完成.
编辑2:评论中的第二个问题:在Cocos2dx的HelloWorld示例中,为什么还需要手动调用CREATE_FUNCTION?
不需要,但在使用cocos来使用它们的宏时,它可能被认为是"良好实践",因为当它们create()在新版本中的宏实现的功能中装入某些东西时,它们只需要在一个地方更新它 -宏定义.这样可以减少出错的空间,因为几乎没有机会"忘记"将代码更改为新版本的地方.
| 归档时间: |
|
| 查看次数: |
4979 次 |
| 最近记录: |