《Cocos2d-x实战:C++》学习笔记——基础概念

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Cocos2d-x实战:C++》学习笔记——基础概念相关的知识,希望对你有一定的参考价值。

1.导演(Director)

导演类(v3.0之前是CCDirector)用于管理场景对象,采用单例设计模式,在整个工程中只有一个实例对象。由于是单例模式,能够保存一致的配置信息,便于管理场景对象。用getInstance()方法获取Director的实例。导演对象的职责如下:

  • 访问和改变场景
  • 访问Cocos2d-x的配置信息
  • 暂停、继续、和停止游戏
  • 转换坐标

技术分享

Director类的类关系

2.场景(Scene)

场景类(v3.0之前是CCScene)是构成游戏的界面,类似于电影中的场景。场景大致分为以下几类:

  • 展示类场景:播放视频或简单地在图像上输出文字,来实现游戏的开场介绍、胜利和失败提示、帮助介绍
  • 选项类场景:包括主菜单、设置游戏参数等
  • 游戏场景:游戏的主要内容

Director类控制场景常用方法:

  • runWithScene(Scene *scene)启动游戏,并运行scene场景,本方法在主程序第一次启动主场景的时候调用。如果已有正在运行的场景则不能调用该方法;会调用pushScene-->startAnimation。
  • pushScene( Scene *scene ) 将当前运行中的场景暂停并压入到代码执行场景栈中,再将传入的scene设置为当前运行场景,只有存在正在运行的场景时才调用该方法。
  • replaceScene( Scene *scene ) 直接使用传入的scene替换当前场景来切换画面,当前场景被释放。这是切换场景时最常用的方法。
  • popScene() 释放当前场景,再从代码执行场景中弹出栈顶的场景,并将其设置为当前运行场景。如果栈为空,直接结束应用。和PushScene结对使用。
  • end() 释放和终止执行场景,同时退出应用。
  • pause() 暂停当前运行场景中的所有计时器和动作,场景仍然会显示在屏幕上。
  • resume () 恢复当前运行场景的所有计时器和动作,场景仍然会显示在屏幕上。

技术分享

Scene类的类关系

3.层(Layer)

Layer是处理玩家事件响应的Node子类。与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸,加速度计和键盘输入等。我们需要在层中加入精灵,文本标签或者其他游戏元素,并设置游戏元素的属性。层的叠加是有顺序的,从上到下依次是:菜单层->精灵层->背景层,同样层的次序也用于事件响应,即菜单层最先接收到系统事件,然后是精灵层,最后则是背景层。向场景中添加层,可以用addChild方法。先添加的层会被置于后添加层的下面,如果我们需要为它们指定顺序的话可以设置不同的zOrder值。

技术分享

Layer类的类关系

4.精灵(Sprite)

精灵类Sprite(v3.0之前是CCSprite)是游戏中非常重要的概念,它包括敌人、控制对象、静态物体和背景灯。通常情况他会进行运动,运动的方式包括移动、旋转、放大、缩小和动画等。Sprite包含很多类型,例如物理引擎精灵类也属于精灵。

技术分享

Sprite类的类关系

5.菜单(Menu)

菜单在游戏中是非常重要的概念,它提供了操作的集合。在菜单中又包含了菜单项MenuItem,MenuItem中又有很多的子类,如MenuItemLabel、MenuItemSprite和MenuItemToggle,它们表现出不同的效果,每个菜单项都有三个基本状态:正常、选中和禁止。

技术分享

Menu类的类关系

技术分享

MenuItem类的类关系

6.Position和AnchorPoint、UI坐标和OpenGL坐标、世界坐标和模型坐标

Position(位置)属性是Node对象的实际位置,但Position属性往往要配合AnchorPoint才能精准的把一个Node对象放在合适的位置。AnchorPoint是一个对象的锚点,就是一个Node对象的锚点在它本身的比例,比如,AnchorPoint为(0.5,0.5)它就以中心点为锚点,AnchorPoint为(1,1)则就是以一个Node的右上角为锚点。

    UI坐标原点在左上角,x轴向右为正,y轴向下为正。在androidios等平台是遵守这个坐标系。OpenGL坐标原点在做下角,x轴向右为正,y轴向上为正,Cocos2d-x底层采用的OpenGL渲染,因此默认坐标就是OpenGL坐标。

    世界坐标就是一个对象在这个世界坐标中真实的位置,而模型坐标则是对象2相对于对象1的位置。

 

以上是关于《Cocos2d-x实战:C++》学习笔记——基础概念的主要内容,如果未能解决你的问题,请参考以下文章

cocos2d-x实战 C++卷 学习笔记--第4章 使用标签

cocos2d-x实战 C++卷 学习笔记--第4章 使用菜单

cocos2d-x实战 C++卷 学习笔记--第5章 精灵

cocos2d-x实战 C++卷 学习笔记--第7章 动作特效

cocos2d-x实战 C++卷 学习笔记--第6章 场景与层

《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音