gpt4 book ai didi

cocos2d-x - 在Cocos2dx中使用CREATE_FUNC

转载 作者:行者123 更新时间:2023-12-04 16:29:05 24 4
gpt4 key购买 nike

谁能解释我为什么需要在Cocos2dx中使用CREATE_FUNC?我在HelloWorld样本中看到了它,但不清楚。请告诉我更多细节。谢谢。

最佳答案

我们不需要使用它,它是一个辅助宏,它扩展为:

/**
* 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;
}
}

基本上,它会为您的类型“写入” create()方法,并调用 init()实现。它的主要目的是调用 autorelease()方法,这样,如果您要编写自己的 create(),就不会忘记它。它可能看起来不多,但需要花费您一些时间。

提示:在大多数IDE中,您可以在函数和宏之类的代码段上添加 Control + Click(MAC上的命令),IDE会将您带到它。

让我知道是否仍然不清楚。

编辑 :
来自注释的问题: 具体来说,如果我想编写一个从CCSprite扩展而来的CCCarSprite,并具有更多运行,崩溃等功能,是否需要调用CREATE_FUNCTION(CCCarSprite)?

不,你没有。您要做的是调用父类(super class) init…方法之一。最好从构造函数或子类中的 init()完成。

编辑2:
评论中的第二个问题: 再说一遍,在Cocos2dx的HelloWorld示例中,为什么他们需要手动调用CREATE_FUNCTION?
不需要,但是当与cocos一起使用它们的宏时,它可能被认为是“好的做法”,因为当他们可以在新版本的宏中实现的 create()函数中进行某些操作时,只需要将其更新到一个位置-宏定义。这几乎没有错误的余地,因为几乎没有机会“忘记”将代码更改为新版本的地方。

关于cocos2d-x - 在Cocos2dx中使用CREATE_FUNC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22151939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com