#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函数会先被调用
applicationDidFinishLaunching函数将在下一篇博文中详细描述。