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值。
相关文章推荐
- cocos2dx spine之一 :spine缓存 (c++ & lua)
- 使用TexturePacker生成png和plist,在Cocos2dx中使用plist和png
- Cocos Creator 控制面板
- Cocos Creator 介绍
- cocos2d-x怎么实现跨平台 记录
- Cocos2d-JS schedule用法
- 【cocos2d-js官方文档】十七、事件分发机制
- Qiuck_Cocos基础(二)
- Qiuck_Cocos基础(一)
- cocos2dx 3.0 beta android环境配置 (转)
- 手游研发系列【1】—— csv解析方案
- Cocos2d-x使用iconv库解决UTF8乱码与移植安卓
- cocos2d-x lua中实现异步加载纹理
- cocos2dx-3.10-lua_函数
- cocos2dx-lua_热更新_官方示例_AssetsManagerExTest
- cocos2dx-3.10_配置问题
- 在Quick-cocos2d-x中使用LuaXML
- cocos2dx-lua_添加c++自定义函数
- cocos2dx-lua_热更新_AssetsManagerExTest分析
- cocos2dx Lua工程调用C++ 详细操作步骤