您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x 综述——API 风格

2016-07-13 19:58 387 查看

两阶段构造器及静态create()函数

Cocos采用两阶段构造器是因为C++的构造函数没有返回值,我们想要知道一个对象是否正确构造,就添加一个create()函数,使用该函数来进行构造调用。

例如,我们经常会看到:

auto layer = HelloWorld::create();


而不是直接去调用HelloWorld的构造函数。

至于这个create函数怎么写,Cocos已经写好一个CREATE_FUNC宏示范:

#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; \
} \
}


该宏的功能是调用默认构造函数,将其加入自动内存管理,并调用init函数。

示例:

public:
CREATE_FUNC(HelloWorld);


init函数中,我们才进行对象的逻辑代码编写。

示例:

bool HelloWorld::init()
{
if (!Layer::init())
{
return false;
}

return true;
}


除了单例模式,每一个cocos2d类都有自己的static CCClass* CCClass::create(…)方法。

官方极力推荐这一写法。

doSomething()

这是最常见的函数名,在Cocos2d-x/-html5引擎中处处都有应用到。第一个字是一个动词,第二个字是一个名词。比如:
replaceScene(CCScene*)
getTexture()


doWithResource()

它是doSomething()方法的变体。在
initWithTexture(CCTexture*)
initWithFilename(const std::string&)
中,你经常可以看见这一函数名。

onEventCallback()

当你看到类似
void onEnter()
的函数名时,onAction类型表明这是一个回调函数。当引发一定条件时,其他类将调用这一方法。

getInstance()

在Cocos2d-x引擎中,如果你没有发现
create()
,只发现了
getInstance()
方法,它就属于单例模式类。比如,
TextureCache::getInstance()
。单例类对应的析构方式是
destroyInstance()


属性

因为在C++ 和 C++11中没有”property” (“属性”)这个概念,所以我们在Cocos2d-x引擎中使用了许多getter和setters。

setProperty()

改变属性的值。这通常会影响到对象的行为。比如 _sprite->setPosition(ccp(0,0)) 会将精灵移动到左下角。

getProperty()

setProperty
不同,
getProperty
将不会改变对象的成员变量及行为。

isProperty()

只用于boolean类型的属性,和
getProperty
一样,但会返回一个boolean值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: