刚刚开始学习cocos2dx3.3,做一下记录,方便以后回来看。
分析helloworld是怎么初始化director,如何创建场景和显示等。
参考资料:
http://www.2cto.com/kf/20150/370238.html
http://www.cnblogs.com/imhurley/p/3801703.html
1、我的理解,维护整个游戏循环的是:
"AppDelegate.h" 和 "AppDelegate.cpp" 文件
大家先看一下整个helloworld的结构图
看不懂没关系,后面我会解释,最后再回来看一下结构图,一目了然。
2、游戏的启动的时候,AppDelegate就像main函数一样,直到游戏结束,AppDelegate才会结束运行。
如图所示,我
AppDelegate流程分成三段来看:
(1)AppDelegate首先初始化director、添加资源之类的东西
(2)然后createScene()创建一个场景类对象
(3)
之后就开始run(),运行这个场景类
3、上面的三个小步骤都是挺容易看懂的,不过我要重点分析的是第二个小步骤,这个scene初始化这一块,scene初始化里面是开发人员主观能动性发挥的地方。
应该大部分人都能看懂吧,不过我还是啰嗦一下:
auto scene = HelloWorld::createScene();//这句话使用了c++11的新特性,详情请看http://www.cnblogs.com/hujian/archive/2012/02/15/2352050.html
首先调用了createScene函数来生成一个Scene类的对象,后面再解释 createScene函数里面做了什么事!!!
如果你们仔细的话,会发现auto layer=HelloWorld::create();这一个语句会自动调用init函数,因为create()初始化了了一个新的Helloworld对象,会自动调用init去初始化。
4、create () 我就不分析了,大家可以根据下面我介绍的方法研究一下。
经验分析:
如果想要单步调试,还是按快捷键“continue ” (control+command+Y)比较方便
2、如果不知道这个函数干嘛用,就可以按住“command”,再左键点击想要看定义的函数
如下:
继续看定义,如下
原来CREATE_FUNC(__TYPE__)是一段宏定义,相当于“static create()”方法的实现。
3、当时纠结了好久,不知道要研究cocos2dx 2.X 还是3.X,直到我把两种的helloworld 源码看了一遍之后,我发现无论 学哪一种都行,不过推荐3.X,因为3.X做了更多的封装,把开发者从大量的代码中解放出来,特别是UI设计方面,程序员不用再花过多时间去做界面
原文链接:https://www.f2er.com/cocos2dx/344556.html