1. 下载Cocos2d-x
到官网下载最新版本的Cocos2d-x,目前最新版本是v3.3rc0。下载地址:http://cocos2d-x.org/download
下载的Cocos2d-x为.zip文件,解压到任意目录(e.g.:/Users/huangzheng/Documents),如图1所示,即为解压后的文件目录。
图1cocos2d-x 3.3rc0解压后的文件目录
2. 下载Xcode
Mac电脑中一般安装有Xcode,如果已经安装,则不需要下载,没有安装,需要在AppStore中下载安装Xcode,目前最新版本为Xcode 6.2beta,这个版本需要开发者账号,如果没有开发者账号,可以选择下载Xcode 6.1版本。Xcode 6.2beta下载地址为:https://developer.apple.com/xcode/,Xcode 6.1直接在AppStore中搜索Xcode安装即可。
3. 创建第一个测试项目
Cocos2d-x v3.3rc0无法在Xcode中添加模板,需要使用终端创建第一个测试项目。
1) 打开终端(FinderàApplicationsàUtilitiesàTerminal)。
2) 在终端中进入到Cocos2d-x目录下的/tools/cocos2d-console/bin目录下(e.g. :cd /Users/huangzheng/Documents/cocos2d-x-3.3rc0/tools/cocos2d-console/bin)。
图2:在终端中键入命令,进入到cocos2d-x的bin目录下
3) 键入命令 python cocos.py newProjectName –p PackageName -l cpp -d dir。
(e.g. : python cocos.pynew HelloWorld -p com.CityU.hz -l cpp -d ~/Desktop)
ProjectName:新建项目的名称。PackageName:新建项目最终打包的包名。-l :使用的开发语言的类型(3中语言类型可以选择:cpp、lua、js)。-d :新建项目存放的位置。创建好的项目如图3所示。
图3:新建第一个cocos2d-x项目HelloWorld
4) 进入到新建项目的proj.ios_mac目录下,使用Xcode打开新建的项目。
图4:新建的项目HelloWorld的文件目录
图5:proj.ios_mac的文件目录
双击“HelloWorld.xcodeproj”即可使用xcode打开新建的项目。
5) 运行新建的项目。
图6:Xcode打开新建的项目
点击左上角的三角符号,即可运行新建的项目(编译,运行,需要等待一段时间)。最终运行界面如图7所示。
图7:运行新建的项目
4. 在iPad上运行新建的项目
5. 程序启动流程。
在IOS的应用上,上层使用Object-C进行编写,C++主要编写的是平台无关代码。上层调用C++写的平台无关代码,实现游戏的动画、逻辑。
程序启动流程如图8所示。
图8:底层调用关系图
main函数首先调用AppController,AppController实例化一个EAGLView对象,并且定义Pixel Formate,Depth Formate等,使用EAGLView对象来使用OpenGL ES在屏幕上进行图像以及动画的绘制。接着调用startMainLoop,startMainLoop是一个无限的循环,直到用户调用exit则退出循环,在startMainLoop中调用AppDelegate,运行用户编写的代码。
6. 编写自定义的cocos2d-x项目。
在Cocos2d-x引擎中,采用节点树形构来管理游戏对象,一个游戏可以划分为不同的场景,一个场景又可以划分为不同的层次,一个层又可以拥有任意个可见的游戏节点(即对象,游戏中基本上所有的类都派生于节点类Node)。可以执行Action来修改游戏节点的属性,使其移动、旋转、放大、缩小等等。
每一个时刻都有一个场景在独立运行,通过切换不同的场景来完成一个游戏流程,游戏流程的管理由Director来执行,其基本框架类图如图所示。
图9 : 基本框类图
Director是整个Cocos2d-x引擎的核心,游戏中的一些重用操作就是有Director来控制的,比如OpenGLES的初始化、场景的转换、游戏暂停继续的控制、世界坐标和GL坐标之间的转换、对节点(游戏元素)的控制等、一些游戏数据的保存调用、屏幕尺寸的获得等。在cocos2d-x3.3rc0中,通过Director::getInstance();获取得到Director的实例对象,Director使用了单例模式。
Scene是cocos2d-x中必不可少的元素,屏幕上显示的画面就是一个scene,在开发中一个一个场景的切换,就是一个一个scene的切换。 。Director操作Scene有几种常用的方法:
· runWithScene(Scene *scene); 主程序第一次启动场景的时候调用。
· pushScene(Scene *scene); 将当前的场景压入栈中,显示传入的Scene。
· replaceScene(Scene *scene);销毁当前的场景,显示传入的Scene。
· popScene();销毁当前的场景,显示栈顶得Scene,如果栈为空,则结束应用。
Layer通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸、加速度计、键盘输入等。在层中可以加入Sprite、Label等游戏元素。组织好Layer之后,需要将Layer按顺序加入到Scene中就可以显示。添加方法为addChild();
Sprite是屏幕上显示的游戏元素,可以对Sprite进行移动、旋转、缩放、执行动画等。
Cocos2d-x 在代码编写风格上遵循了Object-C的编写风格,生成新的对象很多都使用create()方法。例如:
autoscene = Scene::create();
autolayer = HelloWorld::create();
auto menu= Menu::create(closeItem,NULL);