Cocos2dx基础概念

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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值