【1】类的实例
在cocos中类的实现本质上是通过两段构造的方法实现,第一阶段是类默认的构造函数,第二阶段是调用对象的initial方法。如下面的例子:
MyClass* obj = new MyClass; if (true == obj->initWithFilename("texture.png")) { // congratulations, go ahead! } else { // error process }
但是这样做会显得冗余,所以在2.2.3中统一做了封装,所有的类实例化都通过create()方法。如下面的例子:
Sprite* monster = Sprite::create("Monster.png"); monster->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); this->addChild(monster);
【2】函数命名风格
dosomething()风格
比如:replaceScene(CCScene*) 和 getTexture()
。
dowithsomething()风格
比如:initWithTexture(CCTexture*) 和 initWithFilename(const std::string&)。
onenventcallback()风格
回调函数,发生特定事件的时候会调用该函数。
如:
class Layer { public: virtual void onEnter(); virtual void onExit(); virtual void onEnterTransitionDidFinish(); }
【3】特殊:单例类
在coc中存在一些单例类,获取他们要使用getinstance(),单例类对应的析构方式是destroyInstance()。在v3.0之前,单例类的构造方式是CocosClass::sharedCocosClass(),比如TextureCache::sharedTextureCache()。这个方法在v3.0中仍然可以兼容,但不保证在v3.0更后面的版本中仍然保留。
【4】属性
在coc中”没有“属性的概念,取而代之的是很多set,get和is方法。
总结起来:
- 如果属性为“只读”,将不会有setProperty(type)方法;
- 如果属性为一个bool值,将会有setProperty(bool)及 isProperty()方法。 比如:Sprite::isDirty()和Sprite::setDirty(bool bDirty)。
- 如果属性不是一个bool值,将会有 setProperty(type) 和 getProperty()方法。比如:void Sprite::setTexture(Texture2D*)和 Texture2D* CCSprite::getTexture()。