第二章引擎(下)

本文介绍了Cocos2d-x游戏开发框架的核心概念,包括导演类Director、场景类Scene、层Layer以及Node节点的基本定义与操作方法,还详细阐述了游戏循环与调度机制,以及Cocos2d-x坐标系的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cocos2d-x学习笔记


Cocos2d-x 核心概念

导演

导演类Director用于管理场景对象,采用单例设计模式,在整个工程中只有一个实例对象。
导演对象职责如下:

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

场景

场景类Scene是构成游戏的界面,类似于电影中的场景。
场景大致可以分为以下几类:

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

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

Node

定义

Cocos2d-x采用层级(树形)管理场景、层、精灵、菜单、文本、地图和粒子系统等节点(Node)对象。一个场景可以包含多个层,层级结构中的节点可是场景、层、精灵、菜单、文本、地图和粒子系统等任何对象。

Node中重要操作
  • 创建节点:Node * ChildNode = Node::create()
  • 增加新的子节点:node->addChild(childNode, 0, 123),第二个参数Z轴绘制顺序,第三个参数是标签。
  • 查找子节点:Node *node = node->getChildByTag(123),用过标签查找子节点。
  • node->removeChildByTag(123, true)通过标签删除子节点,并停止所有该节点上的一切动作。
  • node->removeChild(ChildNode, true)删除childNode节点,并停止所有子节点,并停止这些子节点上的一切动作。
  • node->removeAllChildrenWithCleanup(true)删除node节点的所有子节点,并停止这些子节点上的一切动作。
  • node->removeFromParentAndCleanup(ture)从父节点删除node节点,并停止所有该节点上的一切动作。
Node中重要属性
  • position:Node对象的实际位置。
  • anchorPoint:相对于position的比例。

游戏循环与调度

导演对象来管理和维护每个游戏程序中的不停的循环,使用定时器(Scheduler)对精灵等对象的运行进行调度。因为Node类封装了Scheduler类,所以也可以直接使用Node中的定时器相关函数。
Node中的定时器相关函数主要有:

  • void schedulerUpdate(void) :每个Node对象只要调用该函数,那么这个Node对象就会定时地每帧回调一次自己的update(float dt)函数。
  • void schedule(SEL_SCHEDULE selector, float interval):与scheduldUpdate函数功能一样,不同的是我们可以指定回调函数,也可以指定回调间隔。
  • void unscheduleUpdate(void):停止update(float dt)函数调度。
  • void unschedule(SEL_SCHEDULE selector):可以指定具体函数停止调度。
  • void unscheduleAllSelector(void):可以停止调度。

Cocos2d-x坐标系

UI坐标

UI坐标是二维坐标,原点是在左上角,x轴向右位正,y轴向下位正。

OpenGL坐标

Cocos2d-x默认采用OpenGL,是三维坐标,是右手坐标系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值