Cosos2d-x示例代码的主函数只干了一件事,即创建了一个应用程序实例:
// create the application instance
AppDelegate app;
return Application::getInstance()->run();
// Initialize instance and cocos2d.
if (!applicationDidFinishLaunching())
{
return 1;
}
AppDelegate类中包括四个主要的函数:
void initGLContextAttrs()
该函数用于初始化Open上下文属性,目前可以初始化六种属性:red,green,blue,alpha,depth,stencil,可根据自身需要在函数中进行更改。
bool applicationDidFinishLaunching()
应用程序启动后调用该函数,主要提供了Director和Scene的初始化,用户可将程序所需的初始化代码放到该函数中。
void applicationDidEnterBackground()
void applicationWillEnterForeground()
当程序进入前台时调用的函数,主要工作是恢复程序进入后台时的状态并恢复程序的运行。
下面对示例程序中的applicationDidFinishLaunching()函数进行分析。
Configuration::getInstance()->loadConfigFile("configs/config-example.plist");
该段代码通过配置文件将配置读入程序,配置文件为xml格式,主要保存了帧率、是否在界面上显示帧率、OpenGL投影类型、PNG像素格式等等配置内容。
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::create("Cpp Tests");
director->setOpenGLView(glview);
}
director->setDisplayStats(true);
director->setAnimationInterval(1.0 / 60);
该段代码初始化Cocos2d-x的Director,并获取到OpenGL的视口,将其与Director进行绑定。随后,启用了状态显示功能,并将帧率设置为60fps。
auto fileUtils = FileUtils::getInstance();
std::vector searchPaths;
if (screenSize.height > 320)
{
auto resourceSize = Size(960, 640);
searchPaths.push_back("hd");
...
}
else
{
...
}
fileUtils->setSearchPaths(searchPaths);
该段代码根据屏幕分辨率的大小,对文件查找路径进行了设置,但屏幕尺寸的高度大于320时,认为其为高分辨率屏幕,将资源路径定位为高分辨率素材所在的文件夹,否则,认为其为标准屏幕,将资源路径定位为普通素材所在的文件夹。
glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::SHOW_ALL)
设置设计分辨率尺寸,ResolutionPolicy有三种:
[1] EXACT_FIT:当屏幕分辨率与设计分辨率比例不同时,强制拉伸(无黑边).
[2] NO_BORDER:当屏幕分辨率与设计分辨率比例不同时,等比例放大(无黑边)
[3] SHOW_ALL:当屏幕分辨率与设计分辨率比例不同时,等比例放大(有黑边)
// Enable Remote Console
auto console = director->getConsole();
console->listenOnTCP(5678);
打开控制台监听(Console模块用于远程调试)。
_testController = TestController::getInstance();
获取测试控制器,TestController类为示例程序的控制类,将在下一部分进行分析。