cocos2dx入门二之游戏循环
2012-12-22 19:22
218 查看
代码执行流程:
Cocos2dxRenderer.onDrawFrame()->Cocos2dxRenderer.nativeRender()->Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp.Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeRender()->
CCDisplayLinkDirector.mainLoop()-> CCDisplayLinkDirector.drawScene()->m_pScheduler.update(m_fDeltaTime);m_pRunningScene.visit()
说明:
虽然每个CCObject对象都有个update方法,但是看源码,主循环中并没有直接调用这个update方法来进行逻辑循环,而只是调用schdule的update方法进行,同时不停的调用visit方法对ui树进行重绘。
每一个 CCNode对象都持有同一个m_pScheduler对象实例在构造函数中从CCDirector获取,该对象实例由CCDirector初始化的时候初始化,并持有。因此,可以通过CCNode的schedule方法来设置ticker进行场景内的游戏循环,例子中的HelloWorld就是这样做的。也就是说,如果想要在主循环中进行逻辑处理,则必须向scheduler注册,可以用CCNode的schedule或者scheduleUpdate(),scheduleUpdate需要覆盖该node的update方法,并在里面做逻辑处理。当然,这是正确方法,还有错误方法同样可以实现目的,但是不建议这么做,即重写visit方法,在里面做逻辑处理。
由于整个循环是在Cocos2dxRenderer.onDrawFrame()中进行,而Cocos2dxRenderer.onDrawFrame()这个方法又是由android系统在一个ui线程之外的线程来中循环调用的,因此,可以理解为,coco2dx的游戏循环是在异步线程中进行游戏逻辑执行和绘制的。
ps:在Windows平台,主循环是在main.cpp的一个while循环中发起的,最后还是走到CCDisplayLinkDirector.mainLoop()
Cocos2dxRenderer.onDrawFrame()->Cocos2dxRenderer.nativeRender()->Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp.Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeRender()->
CCDisplayLinkDirector.mainLoop()-> CCDisplayLinkDirector.drawScene()->m_pScheduler.update(m_fDeltaTime);m_pRunningScene.visit()
说明:
虽然每个CCObject对象都有个update方法,但是看源码,主循环中并没有直接调用这个update方法来进行逻辑循环,而只是调用schdule的update方法进行,同时不停的调用visit方法对ui树进行重绘。
每一个 CCNode对象都持有同一个m_pScheduler对象实例在构造函数中从CCDirector获取,该对象实例由CCDirector初始化的时候初始化,并持有。因此,可以通过CCNode的schedule方法来设置ticker进行场景内的游戏循环,例子中的HelloWorld就是这样做的。也就是说,如果想要在主循环中进行逻辑处理,则必须向scheduler注册,可以用CCNode的schedule或者scheduleUpdate(),scheduleUpdate需要覆盖该node的update方法,并在里面做逻辑处理。当然,这是正确方法,还有错误方法同样可以实现目的,但是不建议这么做,即重写visit方法,在里面做逻辑处理。
由于整个循环是在Cocos2dxRenderer.onDrawFrame()中进行,而Cocos2dxRenderer.onDrawFrame()这个方法又是由android系统在一个ui线程之外的线程来中循环调用的,因此,可以理解为,coco2dx的游戏循环是在异步线程中进行游戏逻辑执行和绘制的。
ps:在Windows平台,主循环是在main.cpp的一个while循环中发起的,最后还是走到CCDisplayLinkDirector.mainLoop()
相关文章推荐
- cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第3天
- cocos2dx游戏开发简单入门视频教程 (cocos2d-x)-第2天
- 【COCOS2DX-游戏开发之九】游戏主循环
- cocos2dx游戏开发概念入门
- cocos2dx-2.2.1结合VS2010游戏开发入门(环境搭建)
- cocos2dx游戏循环流程
- cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第4天
- 我的游戏框架基础构建篇(cocos2dx 循环滚动地图的实现)
- cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第5天
- cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第1天
- cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第1天
- 【COCOS2DX-游戏开发之三三】TMX边界控制与小窗口内预览TMX
- 在学会循环结构语句时就可以写的一个猜拳游戏小项目
- WatchKit入门:创建一个简单的猜数游戏
- 7、Cocos2dx 3.0游戏开发找小三之3.0版本号的代码风格
- C#之入门总结_循环及打印图形_03
- 一、Cocos2dx在visualStudio或者vc++中环境搭建(入门篇)
- 循环控制结构程序05 - 零基础入门学习C语言20
- 写给游戏行业新人的入门告诫
- Shell脚本入门(八) - 循环控制语句: while