今天来看一下cocos2d-x的整体启动过程:
cocos2d-x 在各个平台的实现代码是一样的,只要针对不同平台做相应的配置就可以了。
一、启动前奏
现在来看一下在ios平台下的相关结构:
打开源代码自带工程,你会看到一个main文件,这里main里面有一个main函数,这是程序的入口函数。在这里他回加载AppController,进入这个类,这里有ios平台华景初始化代码,但是最先执行的如下:
// cocos2d application instance
static AppDelegate s_sharedApplication;
在这里cocos2dx创建了一个appDelegare的对象,当然在创建的过程中会进行相应的初始化,通过代码可以看到:
/**
@brief The cocos2d Application.
The reason to implement with private inheritance is to hide some interface details of CCDirector.
*/
class AppDelegate : private cocos2d::CCApplication
在这里就会调用CCApplicaiton的构造函数:
CCApplication::CCApplication()
{
CC_ASSERT(! sm_pSharedApplication);
sm_pSharedApplication = this; //全局共享实例对象
}
在这里,将this赋值给了sm_pSharedApplication, 这个this是什么? 实际上this是AppDeletegate, 因为 在这里的调用过程中并没有涉及到父类的对象,如果要涉及应该CCApplication::CCApplication(); 我们c++在 创建派生类对象的事后不会创建父类对象,他只会显示或者隐式的调用父类的构造函数。
但是这里为什么会有一个没有用到的全局变量呢? 答案在后面:
点击 继续阅读更多精彩内容
cocos2dx 启动过程详解一:渲染