Cocos2d-x示例代码学习(1)

来源:互联网 发布:隔骨算法算男女准吗 编辑:程序博客网 时间:2024/04/29 11:18

Cosos2d-x示例代码的主函数只干了一件事,即创建了一个应用程序实例:

// create the application instance    AppDelegate app;    return Application::getInstance()->run();

在run函数中主要完成了一些初始化工作,我们主要关心这段代码:

// Initialize instance and cocos2d.    if (!applicationDidFinishLaunching())    {        return 1;    }

这里调用了一个函数applicationDidFinishLaunching(),该函数在AppDelegate类中进行实现。

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<std::string> searchPaths;        if (screenSize.height > 320)    {        auto resourceSize = Size(960, 640);        searchPaths.push_back("hd");<pre name="code" class="cpp">        ...    }    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类为示例程序的控制类,将在下一部分进行分析。



0 0