1.1 历史介绍
Ricardo在2008年的时候发布cocos2d-iPhone的引擎。cocos2d-x是由王哲在2010年引进的,它的前身是cocos-ios,但是不兼容其他的平台。Cocos在国内游戏份额是70%,国外20%。cocos向下兼容一直做得不好,即使两个版本发布的很近,也有很多的细节是不可以在低版本上运行的。
由于游戏的生命周期很短,开发周期也很短,对代码的要求不高,有更多写代码的机会,所以适合新手进入。游戏需要建立面向对象的概念,Cocos2d-x是基于C++写的,里面都是一堆的类库。
为何都是类库,有的称为库,有的称为框架,有的称为引擎?因为C语言库,只是使用库中的函数等等;但是qt框架,可以继承类库,在类的基础上增加一些特殊的功能;cocos2d-x游戏引擎是按照游戏设计的要求顺序的调用这些资源,比如定时器定时发送图片。cocos2dx封装了OpenGL的图形接口,本质是一个图形引擎。游戏要具有简单,耐玩和虐心等特点。
1.2 开发环境搭建
在Windows平台下,直接将压缩包解压就好,解压之后将_MACOSX删除,需要安装pathon(默认安装就ok)才可以创建工程。创建工程需要从终端运行一个的脚本,路径是cocos2d-x-2.2.3\tools\project-creator\
然后create_project.py -project -package -language 。包名称对于Android来说有用,Android下面project没有用,创建之后生成一个项目,项目下面的classes目录存储的是和平台无关的代码。之后再vs里面打开这个项目,编译这个项目,第一次花费一段时间,编译之后就可以运行了。
1.3 helloWorld代码分析
生成的win32代码是用Windows下API写的,main函数封装为_tWinMain。AppDelegate定义代理对象(应用程序app),CCEGLView 创建窗口,设置窗 口的属性,之后执行应用程序的run,run不是用app调用的,CCApplication::sharedApplication()->run()。貌似没有使用定义的代理对象,其实在定义代理对象的时候,调用基类CCApplication的构造函数,在基类中定义了一个静态指针变量(因为是单例),在构造函数中用这个成员变量保存this指针,然后调用成员函数sharedApplication返回那个变量,也就是this指针。在run中调用正在执行的那个对象的虚方法applicationDidFinishLaunching,其实游戏真正是从这里开始的。这里用到了代理AppDelegate,代理类是private的继承于AppAplication