Cocos2d-X游戏开发(三)
来源:互联网 发布:掌上电力提示网络异常 编辑:程序博客网 时间:2024/05/01 22:45
Cocos2d-X游戏开发
- 节点
对象关系图:
节点(Node)是Cocos2d-x中最重要的类,继承自Ref类,同时也是所有节点的父类。
Cocos2d-x看所有需要绘制到屏幕的对象,或是自身包含要绘制到屏幕中的对象,都继承自Node类,最常用的节点包括场景、层、精灵和菜单等,每一个节点只有一个父节点,但是可以有任意数量的子节点。
成员变量:
名称
功能
_rotationX
表示节点X轴的水平旋转的角度,节点以锚点为中心顺时针旋转一定量,单位是角度。
_rotationY
表示节点y轴的垂直旋转的角度,节点以锚点为中心顺时针旋转一定量,单位是角度。
_scaleX
表示节点X轴的缩放比例,节点以锚点为中心缩放该比例。
_scaleY
表示节点Y轴的缩放比例,节点以锚点为中心缩放该比例。
_position
表示节点在屏幕中的位置。
_skewX
表示节点X轴的倾斜解度,节点以锚点为中心,平行X轴顺时针变形,单位为角度,默认值为0
_skewY
表示节点y轴的倾斜解度,节点以锚点为中心,平行y轴逆时针变形,单位为角度,默认值为0
_anchorPoint
表示节点的锚点,用于精确地控制节点的位置和位置的变换,节点的变形和定位操作都要依据锚点来确定。
_contentSize
表示未经转换的节点内容大小,以point(点)为单位。
_globalZOrder
表示节点相对于其"兄弟"节点(拥有共同的父节点)的Z顺序值。
_children
节点的子节点数组,变量类型是Vector<Node*>.
_parent
节点的父节点,通常很少用到。变量类型是Node.
_tag
用于识别节点的标识值。
_userData
获取或设置与节点相关的额外信息,变量是一个void的指针对象,表示不确定的对象,可以是一个数据块、一个结构或一个对象等,我们可以利用这个属性来保存任何数据。
_visible
用于判断节点是否可见。
_running
当使用同样的Z值对子节点进行排序时,用该成员变量来决定子节点的顺序,不要手动更改改数值。
_orderOfArrival
用于判断当前节点是否在运行。
成员方法:
名称
类型
功能
virtual void addChild(Node* childNode)
处理子节点
将新节点添加为当前场景节点的子节点,z-order的值为0
virtual void addChild(Node* child,int localZOrder,int tag)
处理子节点
将新节点添加为当前场景节点的子节点并设置子节点的Z值。
virtual void addChild(Node* child,int localZOrder)
处理子节点
将新节点添加为当前场景节点的子节点并设置子节点的Z值和tag值。
Node *getChildByTag(int tag)
处理子节点
使用场景容器的tag获取子节点
virtual Vector<Node*>&getChildren()
处理子节点
获取所有子节点
virtual void removeChildByTag(int tag,bool cleanup=true)
处理子节点
通过tag删除子节点。
virtual void removeChild(Node* child, bool cleanup=true)
处理子节点
通过节点指针删除子节点。
virtual void removeAllChildern()
处理子节点
删除节点的所有子节点。
Action* runAction(Action* action)
动作
运行某个特定的动作,并返回执行的动作。
void stopAction(Action* action)
动作
从运行的动作列表中停止和删除一个特定的动作。
void stopActionByTag(int tag)
动作
根据tag值从运行的动作列表停止和删除一个特定的动作。
void stopAllActions()
动作
从运行的动作列表中停止和删除所有的动作。
Action* getActionByTag(int tag)
动作
根据tag值从运行的动作列表中获得一个特定的动作。
void scheduleUpdate()
定时器事件
启用定时器回调更新函数,该函数每一帧都会被调用。
void schedule(SEL_SCHEDULE selector,float interval)
定时器事件
如果需要根据不同的时间间隔来触发不同的定时更新逻辑,就需要指定运行特定的更新函数。
void scheduleOnce(SEL_SCHEDULE selector,float delay)
定时器事件
指定运行特定的更新函数,并设置调用的延迟时间,但只运行一次
void unscheduleUpdate()
定时器事件
停止scheduleUpdate中设置的预定更新函数update
void unscheduleUpdate(SEL_SCHEDULE selector)
定时器事件
停止指定运行的特定更新函数
virtual bool int()
其它
该函数用于初始化节点,返回bool值,表示是否成功。
virtual void onEnter()
其它
当节点所在的场景即将呈现时调用。
virtual void onExitTransitionDidStart()
其它
当节点所在场景的出场过渡效果结束后调用,如果没有过渡效果,则紧接着onExit()后被调用。
virtual void cleanup()
其它
函数用于停止所有运行中的动作和定时器函数
virtual void draw()
其它
重写该函数以绘制自己的节点
- 导演
在Cocos2d-x中,把统筹游戏大局的类抽象为导演类(Director),Director是整个cocos2d-x引擎的核心,是整个游戏的导航仪。游戏中的一些常用操作就是由Director来控制的,比如OpenGL ES的初始化,场景的转换,游戏暂停继续的控制,世界坐标和GL坐标之间的切换,对节点的控制等,还有一些游戏数据的保存调用,屏幕尺寸的获取等都要由Director类来管理控制的。
因为Director是游戏项目的总导演,会经常调用进行一些控制,所以该Director利用了单件设计模式,也就是整个游戏里只有一个导演类。用getInstance()方法取得Director的实例。
//创建一个导演类的单例
Director* pDirector =Director::getInstance();
getVisibleSize:获得可视区域的大小。若是设计分辨率跟屏幕尺寸一样大,则getVisibleSize便是getWinSize。
getWinSize:获取屏幕大小。
getVisibleOrigin:表示可视区域的起点坐标。
另外还有一个就是Node节点里面的getContentSize()函数。
getContentSize:来获得节点(Node)原始的大小。只是逻辑尺寸,不是像素
//获取屏幕大小
autovisibleSize =Director::getInstance()->getVisibleSize();
Vec2origin =Director::getInstance()->getVisibleOrigin();
- 场景
在游戏里,场景就是关卡。关卡由人物角色和背景构成。在电影里,场景就是电影中的各种场面,各种场面主要由人物活动和背景等构成。而在Cocos2d-x 引擎中,场景存放的是需要渲染的布景,任务角色和菜单,它可以作为一个整体,一起渲染,一起销毁,一起被场景切换使用。
即游戏关卡的实施者,其管理这多个Layer,进行场景展现,相关业务逻辑的处理等;
一个场景就是一个界面,定义了所显示的所有角色图层信息
Scene(场景)是一个抽象的概念,仅被用作Node(节点)的一个子类。Scene(场景)和Node(节点)几乎相同,不同的是Scene的默认锚点在屏幕的中心。现在 scene 没有其它的逻辑,不需要我们做太多的操作及处理,更多的操作处理基本都是在布景层上完成。
//创建场景
autoscene =Scene::create();
//创建图层对象
autolayer =StartLayer::create();
//将图层添加到场景
scene->addChild(layer);
- 图层
Layer是处理玩家事件响应的Node子类。与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸、键盘输入等。我们需要在层中加入Sprite(精灵)、文本标签或者其它游戏元素,并设置游戏元素的属性,比如位置、方向和大小;设置游戏元素的动作等。在我们设计好层以后,只需要把层按照顺序添加到场景中就可以显示出来了。一个场景中有多个可以交互的图层,每层显示不同的角色信息,Layer层一方面作为容器使用,另一方面处理相关事件的响应(如触摸点击、用户输入等)。
//创建一个层
auto layer =StartLayer::create();
- Cocos2d-X游戏开发(三)
- cocos2d-x游戏开发之三
- cocos2d-x游戏开发(三)游戏主循环
- cocos2d-x游戏开发
- [ IOS-Cocos2d-x 游戏开发] - cocosBuilder 开发之三
- 游戏开发教程cocos2d-x移植之三(上)
- cocos2d-x游戏开发(三)无限滚动地图
- Cocos2d-x游戏开发之三 NODE_FUNC和CREATE_FUNC说明
- Cocos2d-x手机游戏开发教程(三)…
- cocos2d-x游戏开发 跑酷(三) 人物跑动
- Cocos2D-x游戏开发之三:音乐播放
- cocos2d-x游戏开发 跑酷(三) 人物跑动
- cocos2d-x游戏开发 跑酷(三) 人物跑动
- cocos2d-x游戏开发(三)无限滚动地图
- cocos2d-x ios游戏开发初认识(三) 帧回掉
- 【cocos2d-x游戏开发】 从零单排之(三)
- cocos2d-x 游戏开发之有限状态机(FSM) (三)
- 【cocos2d-x游戏开发】cocos中的三种缓存类
- Ubuntu 14.04下host文件修改格式
- AlphaGo之父哈萨比斯: 先解决智能 再用智能解决一切
- Rails 中的 Asset Pipeline
- PyTorch学习系列(十四)——保存训练好的模型
- jquery validate 自定义验证表单隐藏域
- Cocos2d-X游戏开发(三)
- 循环删除LISTBOX的项目
- 多线程进阶004 之 任务取消(一)
- redis面试摘录(收录待完善)
- MAC,PIN密钥体系
- Python~~简介介绍
- linux内核(0.11)
- 算法
- No services have been found解决方案