Cocos2dx的api风格
两阶段构造器及静态create()方法
第一阶段是运行C++类构造器。在C++类的默认构造器中,成员变量须设定为默认值。但我们不应在默认构造器中编写任何逻辑。
第二阶段是调用init()函数。
在Cocos2d-x引擎中,已对这一两阶段构造器进行包装,并在静态函数create()中自动释放引用计数。除了单例模式,每一个cocos2d类都有自己的static Class* Class::create(...)方法。所以,如果你希望新建cocos2d的对象,比如Sprite, Label, Action,你必须首先从头文件或API文件中找到它的CocosClass::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()方法,它就属于单例模式类。比如:Dicrector::getInstance()。
setProperty()
改变属性的值。这通常会影响到对象的行为。如sprite->setPosition(Vec2(0,0));会将精灵移动到左下角。
getProperty()
获取对象属性值。getProperty将不会改变对象的成员变量及行为。如sprite->getPosition();获取精灵当前的坐标。
isProperty()
这通常会影响到对象的行为,但会返回一个boolean值。
Cocos2dx文件夹结构
主要内容
cocos2dx文件夹:Cocos2D-X引擎源代码
CocosDenshion文件夹:声音引擎源代码
document文件夹:引擎API文档
extensions文件夹:扩展程序库源代码
external文件夹:物理引擎源代码
licenses文件夹:授权文件
samples文件夹:全部的示例程序
scripting文件夹:脚本源代码
template文件夹:工程模板的安装脚本
tools文件夹:引擎所引用的第三方工具
基础概念介绍——导演、场景、层、精灵
游戏运行每一个时刻都有一个场景在独立运行,通过切换不同的场景来完成一个游戏流程,游戏流程的管理由Director来执行,其基本框架类图如下:
导演(Director)
因为Director是游戏项目的总导演,会经常调用进行一些控制,所以该Director利用了单实例设计模式,也就是项目里取到的Director都是同一个。用Director::getInstance()获取实例。
场景(Scene)
Scene场景也是Cocos2dx中必不可少的元素,游戏中通常我们需要构建不同的场景(至少一个),游戏里关卡、版块的切换也就是一个一个场景的切换,就像在电影中变换舞台和场地一样。场景的一个重要的作用就是流程控制的作用,我们可以通过Director的一系列方法控制游戏中不同的场景的自由切换。
层(Layer)
Layer是处理玩家事件响应的Node子类。与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸,加速度计和键盘输入等。我们需要在层中加入精灵,文本标签或者其他游戏元素,并设置游戏元素的属性,比如位置,方向和大小;设置游戏元素的动作等。通常,层中的对象功能类似,耦合较紧,与层中游戏内容相关的逻辑代码也编写在层中,在组织好层后,只需要把层按照顺序添加到场景中就可以显示出来了。要向场景添加层,我们可以使用addChild方法。
三个重载方法:
addChild( Node child)
addChild( Node child, int zOrder )
addChild( Node *child, int zOrder, int tag )
其中,Child参数就是节点。对于场景而言,通常我们添加的节点就是层。先添加的层会被置于后添加的层之下。如果需要为它们指定先后次序,可以使用不同的zOrder值。tag是元素的标识号码,如果为子节点设置了tag值,就可以在它的父节点中利用tag值就可以找到它了。层可以包含任何Node作为子节点,包括Sprite(精灵), Label(标签),甚至其他的Layer对象。
精灵(Sprite)
Cocos2dx中的精灵和其他游戏引擎中的精灵相似,它可以移动,旋转,缩放,执行动画,并接受其他转换。
创建方式:
Sprite* pSprite =Sprite::create("HelloWorld.png");
pSprite->setPosition(Vec2(0,0));
this->addChild(pSprite);