main函数内容

 

#include "main.h"
#include "AppDelegate.h"
#include "CCEGLView.h"

USING_NS_CC;

int APIENTRY _tWinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // create the application instance
    AppDelegate app;
    CCEGLView* eglView = CCEGLView::sharedOpenGLView();
    eglView->setViewName("CrazyMario");
    eglView->setFrameSize(480, 320);
    return CCApplication::sharedApplication()->run();
}

本文以win32的main函数为模板,该部分代码是win32平台特有,不可移植。

 

_tWinMain是win32程序的主函数,四个参数与cocos2dx关系不大,忽略。

 

1)定义app对象 AppDelegate app; 

AppDelegate是CCApplication的子类,定义的app对象的地址,最后将被保存到CCApplication的静态变量中

可以使用静态函数CCApplication::shareApplication()获取该app的指针。
CCApplication详细信息参见这里

 

2)创建窗口 CCEGLView* eglView = CCEGLView::sharedOpenGLView();

这句代码创建窗口,代码运行到这里只是创建了一个窗口罢了

eglView->setViewName("CrazyMario");是设置窗口的名字

eglView->setFrameSize(480, 320);是设置窗口的大小。对于不同的设备分辨率不同,窗口大小也不同,会导致很多问题,解决方法见这里

对于CCEGLView类的学习参见这里

 

3)运行程序CCApplication::shareApplication()->run();进入程序循环

这个代码要注意以下几点:

a.CCApplication::sharedApplication()返回的指针,就是app的地址,因为app是单例,所以一旦定义了一个对象,就不会再建立其他对象。

b.进入消息处理死循环之前,会先调用applicationDidFinishLaunching虚函数,该虚函数在AppDelegate中进行了重载,所以在进入消息处理之前,AppDelegate的applicationDidFinishLaunching函数会先被调用

cocos2d-x游戏开发系列教程-超级玛丽03-main函数_cocos2dx游戏开发专栏

 

applicationDidFinishLaunching函数将在下一篇博文中详细描述。