《不靠谱2.x》002.CCDirector

前端之家收集整理的这篇文章主要介绍了《不靠谱2.x》002.CCDirector前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、概述
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这两个虚函数意义不大

原文链接:https://www.f2er.com/cocos2dx/342454.html

猜你在找的Cocos2d-x相关文章