Cocos2dx示例学习笔记(一):HelloCpp工程结构分析

研究版本:cocos2dx-2.2.2

打开vs2010工程文件后,先看HelloCpp工程。

在main函数中

1、定义了一个AppDelegate;

2、初始化了CCEGLView;

3、return CCApplication::sharedApplication()->run();

run()中运行message loop(一个线程只能有一个MessageLoop被实例化。)

简化的消息循环形式如下:

MSG msg
while( GetMessage(&msg,NULL,0,0) )

{     TranslateMessage(&msg);     DispatchMessage(&msg);

}

AppDelegate看,它是继承自CCApplication,main中实际上是将AppDelegate run起来了。因此,main函数的作用是当程序进入到引擎层后,初始化CCEGLView,生成并运行AppDelegate对象。

AppDelegate字面的意思是“app委派者“,其实AppDelegate就是整个程序的入口,可以说AppDelegate run起来之后游戏才真正开始运行。

AppDelegate继承与Application类,它控制着整个游戏的生命周期。除了构造函数和析构函数外,还有三个虚函数:按照加载的顺序,分别为:

AppDelegate() ---> applicationDidFinishLaunching()

---> applicationWillEnterForeground()

---> applicationDidEnterBackground()

---> ~AppDelegate()

加粗的都是虚函数,必须实现。

其中尤为重要的是applicationDidFinishLaunching()方法,在该方法中主要的工作时初始化一个导演对象,最后创建一个场景实例,并调用导演的runWithScene()方法run该场景

 

HelloWorld类继承与CCLayer类,然而HelloWorld类并没有实现CCLayer类中的所有虚构函数,显然它也是一个抽象类,然而该类中的静态函数scene()中创建了一个CCScene,并同时创建了一个HelloWorld(其实就是执行的CCLayer中的creat())添加到场景中。

之后的init()函数做了一些初始化工作,生成一些东西并添加到了前面创建的CCLayer中。在init()函数中我们可以设置schedule,并在update()函数中处理游戏逻辑,完成游戏的更新。

 

工程中,还有一个AppMacros.h的文件,里面定义了一些宏,便于其他地方的调用。

posted @ 2014-02-19 21:35  RobinCui  阅读(442)  评论(0编辑  收藏  举报