加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

《不靠谱2.x》002.CCDirector

发布时间:2020-12-14 21:37:47 所属栏目:百科 来源:网络整理
导读:一、概述 CCDirector.h文件包含三个部分:一个ccDirectorProjection枚举类型、CCDirector类自身的定义,以及CCDirector的子类CCDisplayLinkDirector(对CCDirector中4个纯虚函数的实现)。源码如下,已有英文注释,另有少量我自己的注释: typedef enum { //

一、概述
CCDirector.h文件包含三个部分:一个ccDirectorProjection枚举类型、CCDirector类自身的定义,以及CCDirector的子类CCDisplayLinkDirector(对CCDirector中4个纯虚函数的实现)。源码如下,已有英文注释,另有少量我自己的注释:

typedef enum {
    /// sets a 2D projection (orthogonal projection)
    kCCDirectorProjection2D,/// sets a 3D projection with a fovy=60,znear=0.5f and zfar=1500.
    kCCDirectorProjection3D,/// it calls "updateProjection" on the projection delegate.
    kCCDirectorProjectionCustom,/// Default projection is 3D projection
    kCCDirectorProjectionDefault = kCCDirectorProjection3D,} ccDirectorProjection;

class CC_DLL CCDirector : public CCObject,public TypeInfo
{
        // 略
};

class CCDisplayLinkDirector : public CCDirector
{
public:
    CCDisplayLinkDirector(void) 
        : m_bInvalid(false)
    {}
    //@@原来都是CCDirector中的纯虚函数
    virtual void mainLoop(void);
    virtual void setAnimationInterval(double dValue);
    virtual void startAnimation(void);
    virtual void stopAnimation();

protected:
    bool m_bInvalid;
};

二、分析
0、CCDirector的父类除了CCObject,还有个TypeInfo,该类只有一个方法getClassTypeInfo,看名字是用于获得类的类型信息,暂不细究。
1、ccDirectorProjection这个枚举类型似乎似乎和项目设置相关,暂不细究。
2、CCDisplayLinkDirector是对CCDirector中4个纯虚方法的实现,同样暂不细究。
3、剩下的就是CCDirector中的方法和成员变量了:
0)项目生成后自动使用的:setOpenGLView、setAnimationInterval、runWithScene、stop/startAnimation
1)常用的:获取单例、push/pop/replaceScene、pause/resume/end、getWin/VisibleSize
2)可能有用的:popToRootScene、popToSceneStackLevel、getRunningScene、purgeCachedData
3)其他的在基础运用中用到可能性较小,暂不细究
4)CC_PROPERTY定义的一些get、set方法看起来很有用的样子,先放着

三、总结 1、知道了项目的初始化(设置OpenGLView、帧率、是否显示帧率等调试信息、第一个scene的加载)通过CCDirector来实现 2、知道了场景的切换(push/pop/replaceScene) 和控制(pause/resume/end)通过CCDirector来实现 3、知道了屏幕大小(getWin/VisibleSize)通过CCDirector来获取 4、因为一般情况下不会定义一个子类继承自CCDirector(除了这里的CCDisplayLinkDirector),所以除了纯虚函数外的init和getClassTypeInfo这两个虚函数意义不大

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读