下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

初学必看 快速了解Cocos2D-X的引擎结构

作者:课课家教育     来源: http://www.kokojia.com点击数:1125发布时间: 2019-04-17 16:53:44

标签: Cocos2D-X引擎Cocos2D-XCocos2D-X教程

  说到Cocos2d-x就不得不说一下Cocos2D-X的引擎结构,什么,你还不懂?本篇教程将带你快速了解Cocos2D-X的引擎结构。

  在不同平台下,cocos2d-x的入口是不一样的,在win32平台,程序是从_tWinMain()开始的,可以在每一个cocos2d-x的程序中的main.cpp中找到。

  1.程序入口

  (1)在_tWinMain()中,创建的AppDelegate类的对象

  (PS: AppDelegate继承于CCApplication,在构造方法中,初始化CCApplication单例类的唯一实例)

  (2)随后,程序就完全交给了cocos2d-x引擎去处理

  代码如下:

初学必看 快速了解Cocos2D-X的引擎结构_Cocos2D-X引擎_Cocos2D-X_Cocos2D-X教程_课课家 

  2.程序主循环

  (1)初始化CCEGLView,在不同平台下,CCEGLView是不同的

  (PS:cocos2d-x中有很多这样的用法,即同一个头文件,在不同平台上实现不同)

  win32平台下的CCEGLView是一个Windows窗口,具体情况CCEGLView::Create()

  (PS:CCEGLView还用来处理鼠标点击模拟器触摸,按键等事件的处理,如果要自定义,请参看CCEGLView::WindowProc(),这个函数是Windows程序接收消息回调)

  (2)游戏引擎的主循环

  在完成CCEGLView初始化之后,将开启游戏渲染的主循环,即调用CCDirector::sharedDirector()->mainLoop()。这样,程序就又交给CCDirector类来处理,CCDirector主要处理两件事情:

  a. 通过引用计数实现对内存的管理

  b. 游戏内元素的渲染

 

  3.渲染

  在cocos2d中渲染的根节点是CCScene(PS:CCScene也是CCNode的子类),但是在drawScene()中似乎没有类似draw()的方法,那是因为在渲染之前,要对游戏中的节点做一些处理,包括旋转,缩放等等,所以这个方法的名字叫visit(),而visit()是定义在CCNode中的虚方法,CCScene中并没有单独实现。

  (PS:在每一次渲染的时候,都需要先将之前的矩阵入栈,在渲染完当前节点之后,矩阵出栈,恢复之前的矩阵)

  (1)矩阵变化

  通过CCNode::transform()对当前节点做矩阵处理(包括旋转,缩放等等)

  (2)绘制

  绘制就很简单了,遍历所有的子节点,采用递归的方式,对每一个CCNode调用visit()方法

  (PS:设置Z-Order的时候可以设置为负值,有时候是很必要的,比如我们以一个人物精灵的身体为位置参照物,绘制在Z-Order为0的位置上,如果要给这个人物精灵添加一个披风耍帅,就可以将披风的Z-Order设置为负值,并且可以继续以精灵身体作为参照物,因为cocos2d-x提供的访问顺序也是 Z-Order为负值的子节点->自身节点->Z-Order为正值的子节点)

赞(15)
踩(4)
分享到:
华为认证网络工程师 HCIE直播课视频教程