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,这个消息不受场景切换影响
void setDelegate(CCDirectorDelegate* pDelegate); 导演代理,提供更新接口可供用户重新实现
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); 获取单例的导演对象 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |