cocos2dx进阶学习之CCDirector

继承关系

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);

获取单例的导演对象






转自:http://blog.csdn.net/itcastcpp/article/details/18666233
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值