【Cocos2d入门教程二】Cocos2d-x基础概念
admin
2023-02-12 07:00:09
0次

上一章已经学习了环境的搭建。这一章对基础概念进行掌握。内容大概有:

1.导演

2.场景 

3.节点

4.层

4.精灵


1.导演(Director)

导演存在的主要作用:

环境设定(帧率 初始化openGl和渲染器)

场景管理

执行主循环

游戏就是个死循环 不断不断的渲染  就跟视频没两样 一帧一帧的绘制出来  话说提一下一帧为1/60秒  也就是说coco里一秒渲染60次

导演的管理:   计时器  事件管理器  动作管理器

导演继承于REF  一个单例类


获得导演类Director实例语句

auto director = Director :: getInstance();
【Cocos2d入门教程二】Cocos2d-x基础概念


2.场景(Scene)

Scene场景也是cocos2dx中必不可少的元素,游戏中通常我们需要构建不同的场景(至少一个),游戏里关卡、版块的切换也就是一个一个场景的切换,就像在电影中变换舞台和场地一样。场景的一个重要的作用就是流程控制的作用,我们可以通过Director的一系列方法控制游戏中不同的场景的自由切换。

下面是Director控制场景的常用方法:

  • runWithScene( Scene *scene ) 启动游戏,并运行scene场景。本方法在主程序第一次启动主场景的时候调用。如果已有正在运行的场景则不能调用该方法;会调用pushScene-->startAnimation。

  • pushScene( Scene *scene ) 将当前运行中的场景暂停并压入到代码执行场景栈中,再将传入的scene设置为当前运行场景,只有存在正在运行的场景时才调用该方法;

  • replaceScene( Scene *scene ) 直接使用传入的scene替换当前场景来切换画面,当前场景被释放。这是切换场景时最常用的方法。

  • popScene() 释放当前场景,再从代码执行场景中弹出栈顶的场景,并将其设置为当前运行场景。如果栈为空,直接结束应用。和PushScene结对使用

  • end() 释放和终止执行场景,同时退出应用

  • pause() 暂停当前运行场景中的所有计时器和动作,场景仍然会显示在屏幕上

  • resume () 恢复当前运行场景的所有计时器和动作,场景仍然会显示在屏幕上

同时场景是层的容器,包含了所有需要显示的游戏元素。通常,当我们需要完成一个场景时候,会创建一个Scene的子类,并在子类中实现我们需要的功能。比如,我们可以在子类的初始化中载入游戏资源,为场景添加层,启动音乐播放等等。


3.Node节点


Cocos2d-x的核心类实例都是一个节点,这些类是以树状结构继承的,他们的基类都是Node。

Node主要特征,它可以包含其他继承于Node节点例如层、精灵等,可以设置定期回调函数,可以执行动作。

Node继承自Ref类。


4.层(Layer)

 Layer是的Node节点的子类。层包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸,加速度计和键盘输入等。我们需要在层中加入精灵,文本标签或者其他游戏元素,并设置游戏元素的属性,比如位置,方向和大小;设置游戏元素的动作等。通常,层中的对象功能类似,耦合较紧,与层中游戏内容相关的逻辑代码也编写在层中,在组织好层后,只需要把层按照顺序添加到场景中就可以显示出来了。要向场景添加层,我们可以使用addChild方法。

【Cocos2d入门教程二】Cocos2d-x基础概念


addChild( Node child )
addChild( Node child, int zOrder )
addChild( Node *child, int zOrder, int tag )


 其中,Child参数就是节点。对于场景而言,通常我们添加的节点就是层。先添加的层会被置于后添加的层之下。如果需要为它们指定先后次序,可以使用不同的zOrder值。tag是元素的标识号码,如果为子节点设置了tag值,就可以在它的父节点中利用tag值就可以找到它了。层可以包含任何Node作为子节点,包括Sprites(精灵), Labels(标签),甚至其他的Layer对象。



5.精灵(Sprite)


创建精灵的几种方式:

  • 直接创建:

    12auto sprite = Sprite::create("HelloWorld.png");      this->addChild(sprite,0);
  • 使用纹理来创建精灵

    12auto sprite1 = Sprite::createWithTexture(TextureCache::getInstance()>addImage("HelloWorld.png"));this->addChild(sprite1, 0);
  • 使用精灵帧来创建精灵

    12auto sprite2=Sprite::createWithSpriteFrameName("HelloWorld.png"); this->addChild(sprite2, 0);

精灵创建的过程:


//创建Scene
auto scene = Scene::create();
//创建层
auto layer = HelloWorld::create();
//把层加入场景中
scene->addChild(layer);
//创建一个精灵
auto sprite = Sprite::create("HelloWorld.png");
//把精灵加到层里
layer->addChild(sprite, 0);


精灵创建的底层源码(这部分如果看不懂的可以忽略过):

【Cocos2d入门教程二】Cocos2d-x基础概念



从精灵帧中寻找这个图片,如果找不到则编译器会直接崩掉


下面为四者关系的基本架构图:

【Cocos2d入门教程二】Cocos2d-x基础概念



对刚开始感觉有点不理解也实属正常,先大体知道它们的主要是什么就行了。后来慢慢的会了解 。


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...