继承关系

CCDirecotor -> CCObject, TypeInfo

处理主窗口消息,管理何时、何种方式执行场景。

经常被翻译成导演,负责管理整个游戏的进程推动和周边支持。

成员

inline CCScene* getRunningScene(void) { return m_pRunningScene; }

获取当前运行的场景,一个时刻只有一个场景在运行

inline double getAnimationInterval(void) { return m_dAnimationInterval; }

virtual void setAnimationInterval(double dValue) = 0;

FPS相关设置

inline bool isDisplayStats(void) { return m_bDisplayStats; }

inline void setDisplayStats(bool bDisplayStats) { m_bDisplayStats = bDisplayStats; }

在程序左下角是否显示FPS信息

inline float getSecondsPerFrame() { return m_fSecondsPerFrame; }

获取一帧的时间(秒)

inline CCEGLView* getOpenGLView(void) { return m_pobOpenGLView; }

void setOpenGLView(CCEGLView *pobOpenGLView);

设置窗口,对于CCDirector这个导演来说,CCEGLView可以类比为舞台。

inline bool isNextDeltaTimeZero(void) { return m_bNextDeltaTimeZero; }

void setNextDeltaTimeZero(bool bNextDeltaTimeZero);

inline bool isPaused(void) { return m_bPaused; }

是否暂停了

inline unsigned int getTotalFrames(void) { return m_uTotalFrames; }

帧数,自从这个导演启动后,调用的帧数

inline ccDirectorProjection getProjection(void) { return m_eProjection; }

void setProjection(ccDirectorProjection kProjection);

void reshapeProjection(const CCSize& newWindowSize);

ccDirectorProjection相关

void setViewport();

设置glViewPort

inline bool isSendCleanupToScene(void) { return m_bSendCleanupToScene; }

是否一个被替换的场景会受到cleanup消息

CCNode* getNotificationNode();

void setNotificationNode(CCNode *node);

用来显示全局消息的node,这个消息不受场景切换影响

CCDirectorDelegate* getDelegate() const;

void setDelegate(CCDirectorDelegate* pDelegate);

导演代理,提供更新接口可供用户重新实现

CCSize getWinSize(void)

CCSize getWinSizeInPixels(void);

CCSize getVisibleSize();

CCPoint getVisibleOrigin();

getWinSize与getWinSizeInPixels的差别在于是否使用DesignResolutionSize,getWinSizeInPixsels是窗口实际大小

而getWinSize是DesignResolutionSize,getVisibleSize是在有DesignResolutionSize的情况下,有对不齐的情况时不一样的值

CCPoint convertToGL(const CCPoint& obPoint);

CCPoint convertToUI(const CCPoint& obPoint);

坐标转换,从GL坐标到UI坐标的相互转换,GL坐标左下角为原点,UI坐标则是坐上角

void runWithScene(CCScene *pScene);

进入scene,这个函数在第一次进入scene时候调用

void pushScene(CCScene *pScene);

暂停当前scene,将其推入暂停scene栈,启动新的scene

void popScene(void);

弹出当前运行的scene,如果栈中还有scene,那么继续栈顶的scene,如果没有,程序退出

void popToRootScene(void);

弹出所有的scene,除了最后一个不弹

void popToSceneStackLevel(int level);

弹到某个地方,如果level为0,那么相当于程序结束,如果level为1,那么相当于popToRootScene,如果level大于栈深度,那啥也不干

void replaceScene(CCScene *pScene);

替换scene,和pushScene不一样的是,replace不在栈中保存,是直接替换

void end(void);

void pause(void);

void resume(void);

进度管理,结束,暂停,继续scene

virtual void stopAnimation(void) = 0;

virtual void startAnimation(void) = 0;

停止和开始画场景,默认实现和pause、resume相同

void purgeCachedData(void);

清空缓存,主要是CCTextureCache, CCSpriteFrameCache, CCLabelBMFont所指缓存

在cocos2dx中有不少缓存类,这些缓存类,类似舞台上的常用道具,常用道具当然放在离演员最近的地方(内存)

但是当地方(内存)不够时,导演负责指挥清除这些缓存。

void setDefaultValues(void);

void setGLDefaultValues(void);

void setAlphaBlending(bool bOn);

void setDepthTest(bool bOn);

设置一些OpenGL参数

void setContentScaleFactor(float scaleFactor);

float getContentScaleFactor(void);

设置缩放因子

virtual void mainLoop(void) = 0;

主循环,负责画scene

static CCDirector* sharedDirector(void);

获取单例的导演对象

cocos2dx进阶学习之CCDirector的更多相关文章

  1. cocos2dx进阶学习之场景切换

    背景 在学习马里奥时,我们学习到从菜单场景到游戏场景的切换,代码如下 void CMMenuScene::OnStartCallBack( CCObject *pSender ) { CCDirect ...

  2. cocos2dx进阶学习之坐标转换

    在cocos2dx中,有四种坐标系 GL坐标系:左下为原点,x轴向右,y轴向上 UI坐标系:左上为原点,x轴向右,y轴向下 世界坐标系:与GL坐标系相同 本地坐标系:是节点(CCNode)的坐标系,原 ...

  3. cocos2dx进阶学习之CCScene

    继承关系 CCScene -> CCNode -> CCObject CCScene抽象了一个场景的概念,类似舞台的一幕 函数 static CCScene *create(void); ...

  4. cocos2dx进阶学习之屏幕适配

    背景 在学习cocos2dx时,我们在main函数中发现一句代码, #include "main.h" #include "AppDelegate.h" #in ...

  5. cocos2dx进阶学习之CCEGLView

    继承关系 CCEGLView-> CCEGLViewProtocol CCEGLView是窗口,在不同平台上有不同的实现,而CCEGLViewProtocol是CCEGLView定义的接口,所以 ...

  6. cocos2dx进阶学习之CCApplication

    继承关系 CCApplication-> CCApplicationProtocol 类主要成员变量 static CCApplication * sm_pSharedApplication; ...

  7. cocos2dx进阶学习之CCAction

    CCAction在cocos2dx中,抽象了节点的动作.它由CCObject派生,因此它不是渲染节点. 它经常的用法是,创建一个action,然后让某个CCNode对象(一般是精灵),去执行它. 在马 ...

  8. cocos2dx进阶学习之瓦片地图编辑器

    之前学习了瓦片地图类,现在我们来学习下瓦片地图制作工具 这个是开源的工具,可以从网上下载,下面我们演示下怎么做地图 步骤1 将需要用到的图片放到一个目录下,比如我机器上就是d:\tiled,这些图片是 ...

  9. cocos2dx进阶学习之CCTMXTiledMap

    继承关系 CCTMXTiledMap -> CCNode 它由CCNode派生,我们已经知道CCNode是cocos2dx的舞台对象的公共父类,所以CCTMXTiledMap也是个舞台对象 成员 ...

随机推荐

  1. 【技术引擎——汇聚IT思想之间的碰撞】

    转载请注明作者和出处:http://blog.csdn.net/pearyangyang/article/details/40869825    谢谢. 这篇博客将记录我所学习的那些博客大牛,方面以后 ...

  2. poj1637Sightseeing tour(混合图欧拉回路)

    题目请戳这里 题目大意:求混合图欧拉回路. 题目分析:最大流.竟然用网络流求混合图的欧拉回路,涨姿势了啊啊.. 其实仔细一想也是那么回事.欧拉回路是遍历所有边一次又回到起点的回路.双向图只要每个点度数 ...

  3. 《Effective C++》:条款48:理解力template 元编程

    Template metaprogramming(TMP,模板元编程)这是写template-based C++规划.编译过程.template metaprogramming随着C++写模板程序,化 ...

  4. python 命令行参数,以及文件操作

    #demo.py #!/usr/bin/python import sys print sys.argv #python demo.py 11 22 33 44 55 ['demo.py', '11' ...

  5. SQL Server 链接数据库 error:40

    链接到远程服务器的话,经常犯这个错误,所以做个笔记,省的每次去百度. 1.如果使用的是 local 链接,只需要启动服务就可以了(如下图) 2.如果是远程链接的话,那么是需要启动TCP协议的,步骤如下

  6. ShineTime 是一个效果非常精致的缩略图相册

    ShineTime 是一个效果非常精致的缩略图相册,鼠标悬停到缩略图的时候有很炫的闪光效果,基于 CSS3 实现,另外缩略图也会有立体移动的效果.特别适用于个人摄影作品,公司产品展示等用途,快来来围观 ...

  7. 快速检查SQL两表数据是否一致

    1前话 项目内实现了一新功能:克隆数据库. 2目标 克隆并非用SQLSERVER克隆,故完毕后需要检查各表内一些数据与原表一致性.一些表中的某一些列容许不一致. 3实现 将两表的需要检查的几列取出,相 ...

  8. 延迟N秒执行某个方法

    [self performSelector:<#(nonnull SEL)#> withObject:<#(nullable id)#> afterDelay:<#(NS ...

  9. Spring注解与Spring与Struts2整合

    @Component @Controller @Service @Repository 四大注解作用基本一样,只是表象在不同层面 @Resource @Scope Struts2与Spring整合:1 ...

  10. java json的处理

    maven依赖 <dependencies> <dependency> <groupId>com.alibaba</groupId> <artif ...