cocos2d-x札记 (二)----CCDirector深入

cocos2d-x札记 (二)----CCDirector深入,第1张

概述    以下内容基于cocos2d-x 2.2.5+Visual Studio 2012,除特别注明外均为原创,如有纰漏,请m本人 -_-          上一节已经弄明白了HelloWorld运行过程,相信大家对cocos2d-x有个大致了解     现在来看看CCDirector,中文名“导演”,官方对于她是这样介绍的: 这个类被用来创建和处理主窗体,并管理如何执行或何时执行场景.CCD

以下内容基于cocos2d-x 2.2.5+Visual Studio2012,除特别注明外均为原创,如有纰漏,请m本人-_-


上一节已经弄明白了HelloWorld运行过程,相信大家对cocos2d-x有个大致了解

现在来看看CCDirector,中文名“导演”,官方对于她是这样介绍的:

这个类被用来创建和处理主窗体,并管理如何执行或何时执行场景.CCDirector也负责:--初始化OpenGL Context;--设置OpenGL像素格式(默认是RGB565);--设置OpenGL缓冲深度;--设置投影(projection)规则(默认3D);--设置方向(默认竖直方向);由于CCDirector是个单例,所以通过CCDirector::sharedDirector()来访问方法;

我们还记得上一节中显示HelloWorld界面中是这样显示的

bool AppDelegate::applicationDIDFinishLaunching() {    // initialize director    CCDirector* pDirector = CCDirector::sharedDirector();    CCEGLVIEw* pEGLVIEw = CCEGLVIEw::sharedOpenGLVIEw();     pDirector->setopenGLVIEw(pEGLVIEw);        ....         // turn on display FPS    pDirector->setdisplayStats(true);     // set FPS. the default value is 1.0/60 if you don't call this    pDirector->setAnimationInterval(1.0 / 60);     // create a scene. it's an autorelease object    CCScene *pScene = HelloWorld::scene();     // run    pDirector->runWithScene(pScene);     return true;}

可以看到确实是通过CCDirector::sharedDirector()来实例化CCDirector的,那么来看看这个方法

CCDirector* CCDirector::sharedDirector(voID){    if (!s_SharedDirector)    {        s_SharedDirector = new CCdisplaylinkDirector();        s_SharedDirector->init();    }    return s_SharedDirector;}

这里本应该new一个CCDirector却new了一个CCdisplaylinkDirector,是怎么回事呢,来看看

class CCdisplaylinkDirector : public CCDirector{public:    CCdisplaylinkDirector(voID)         : m_bInvalID(false)    {}    virtual voID mainLoop(voID);    virtual voID setAnimationInterval(double dValue);    virtual voID startAnimation(voID);    virtual voID stopAnimation();protected:    bool m_bInvalID;};

可以看到CCdisplaylinkDirector是CCDirector的子类,CCDirector::sharedDirector()方法其实是一个向上转型的过程,所以我们用到的CCDirector其实是CCdisplaylinkDirector,对于CCdisplaylinkDirector官方是这样介绍她的:

CCdisplaylinkDirector是一个显示刷新频率的同步定时器导演她的功能和局限性分别是:是一个调度定时器,绘制并同步显示刷新频率只支持1/60,1/30,1/15这三个时间间隔动画

来看看她具体做了什么

bool CCDirector::init(voID){   ...   // create autorelease pool    CCPoolManager::sharedPoolManager()->push();}
这个CCPoolManager就是cocos2d-x中的垃圾回收管理器了,这里先不详细解释垃圾回收机制

这节主要讲了CCDirector常用功能及局限性,实例化内部机制,下节详细看看cocos2d-x垃圾回收原理


博客其他文章列表
http://my.oschina.net

总结

以上是内存溢出为你收集整理的cocos2d-x札记 (二)----CCDirector深入全部内容,希望文章能够帮你解决cocos2d-x札记 (二)----CCDirector深入所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1075430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存