加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Cocos2d-x API 风格

发布时间:2020-12-14 17:07:38 所属栏目:百科 来源:网络整理
导读:两阶段构造器及静态create()函数 Cocos采用两阶段构造器是因为C++的构造函数没有返回值,我们想要知道一个对象是否正确构造,就添加一个create()函数,使用该函数来进行构造调用。 例如,我们经常会看到: auto layer = HelloWorld:: create (); 而不是直接

两阶段构造器及静态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值。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读