Cocos2d-x入门教程(一)环境搭建与HelloWorld
声明:本教程的开发环境为Win32,并且目前只在此平台上做开发实验。平台的选择只考虑开发的方便,教程的关注点在于平台之上的层面。
为了搭建一个在Windows下的Cocos2d-x开发环境,我们需要:
1.安装VS(2010或者2012 Desktop),笔者安装的是VS Express 2012 For Desktop。
2.下载Cocos2d-x源码库。Cocos2d-x的Github地址 https://github.com/cocos2d/cocos2d-x,你可以下载zip包解压,也可以用git/svn检出,需要提醒的是不要检出全部,否则你要等好一阵子,只要检Head Revision就可以了。
3.编译。拿到源码后你会发现有cocos2d-win32.vc2010.sln 和 cocos2d-win32.vc2012.sln 两个解决方案文件,根据你安装的VS版本,选择其中一个打开,然后生成解决方案。提醒:时间可能会稍微长点,另外js和lua的两个项目可能会有错,因为文件缺失,这个暂时先不管,因为不会影响cpp的开发,后面有需求在解决。
4.设置工作区。找到template文件夹下的msvc文件夹,哪里面有一些脚本,从名字可以看出他们的用途,运行你的VS版本所对应的脚本即可。提示成功安装之后,你在打开VS,新建项目,在Visual C++选项上你就可以看到多出一个Cocos2d-x-win32 Application项目。至此你的环境已经安装完成了。
下面我们稍微再多走一步。
在VS中选择文件-〉新建项目-〉Visual C++-〉Cocos2d-x-win32 Application,命名为HelloWord,确定之后你会发现VS已经为我们自动初始化了一个模版。将这个项目设为默认启动项目,然后执行运行命令,你就会看见一个Cocos2d-x Logo赫然在目。
对这个HelloWord项目你不需要去做别的,只要看懂他如何运行的即可,包括一些类的作用以及初始化顺序。
首先是AppDelegate类。这个类继承了CCApplication,而后者是一个与特定平台进行打交道的类,相当于系统与Cocos2d-x间的一个中间人,它继承自CCApplicationProtocol,正如其名称所示,他规定了一个不同平台间子类应该实现的共同接口。而针对每一个平台都可以实现一个CCApplication子类,我们在Win32平台下的CCApplication是针对Win32平台来实现的,你在源码中还可以找到其他平台的CCApplication类,这里就不再赘述。
因为AppDelegate继承了CCApplication类,所以当实例化AppDelegate对象时,CCApplication也会被调用,从而初始化一些必要的条件。但AppDelegate的作用不止于此,粗略地看一下AppDelegate的定义:
class AppDelegate : private cocos2d::CCApplication { public: AppDelegate(); virtual ~AppDelegate(); /** @brief Implement CCDirector and CCScene init code here. @return true Initialize success, app continue. @return false Initialize failed, app terminate. */ virtual bool applicationDidFinishLaunching(); /** @brief The function be called when the application enter background @param the pointer of the application */ virtual void applicationDidEnterBackground(); /** @brief The function be called when the application enter foreground @param the pointer of the application */ virtual void applicationWillEnterForeground(); };
他需要实现三个接口(构造函数不算),这些接口的作用从其名称上可以猜得一二,它们提供了一些契机,让AppDedegate可以选择地执行一些操作。
为了更深入的理解它我们需要搞清楚一个Cocos2d项目的初始化过程,见下图:
读者可以结合断点调试来理解这个序列图。
刨去这个过程的一些细节,我们需要掌握这里面的一个主线,这个主线也是我们理解并运用Cocos2d-x的基础:
这一主线包括:
1.Application级别初始化。通过AppDelegate到CCApplication到CCApplicationProtocol。
2.openGL级别初始化。通过CCEGLView。
3.Director级别初始化。通过CCDirector,以CCEGLView对象为参数,CCDirector是一个核心控制类,他主导整个View。
4.Scene级别初始化。通过CCDirector来运行整个场景,以及进行场景切换。
Scene级别以上的三个都是单例,而Scene则可以有很多个,事实上Cocos2d游戏的实现逻辑即在于不同Scene间的切换。
相关资料均已上传至Github:https://github.com/Physwf/physwf-c-lab/tree/master/Cocos2d-x%20Tutorial