【玩转cocos2d-x之五】导演类CCDirector
既然cocos2d-x都帮我们封装好了,使得开发与平台无关,那接下来我们就单纯地开始好好玩游戏吧!这几篇是对cocos2d-x一些基本且重要的元素进行解释和API介绍,之前没有系统的看过API,有时候某些功能引擎都已经提供好了,不知道还是会自己去写。所以全面地了解一下是必须的。
概况
导演类CCDirector是cocos2d-x引擎中非常重要的一个类,它是一个抽象类(mainloop空实现),主要完成以下工作:
(1)初始化游戏和销毁游戏
(2)管理调度场景
(3)调整设置openGL信息
(4)获取、设置游戏的相关细节
CCDirector是单例类,直接从CCObject继承而来,它在cocos2d-x中的首次创建位置在上一篇已经介绍了。因此后面的CCDirector调用可采用如下方式:
1
| CCDirector::sharedDirector()->methodname;
|
常用接口
属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| CCScene* getRunningScene(void);
double getAnimationInterval(void);
virtual void setAnimationInterval(double dValue);
bool isDisplayStats(void);
void setDisplayStats(bool bDisplayStats);
float getSecondsPerFrame();
CCEGLView* getOpenGLView(void);
void setOpenGLView(CCEGLView *pobOpenGLView);
bool isPaused(void);
unsigned int getTotalFrames(void);
bool isSendCleanupToScene(void);
|
窗口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| CCSize getWinSize(void);
CCSize getWinSizeInPixels(void);
CCSize getVisibleSize();
CCPoint getVisibleOrigin();
CCPoint convertToGL(const CCPoint& obPoint);
CCPoint convertToUI(const CCPoint& obPoint);
|
场景管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| void runWithScene(CCScene *pScene);
void pushScene(CCScene *pScene);
void popScene(void);
void popToRootScene(void);
void popToSceneStackLevel(int level);
void replaceScene(CCScene *pScene);
void end(void);
void pause(void);
void resume(void);
virtual void stopAnimation(void);
virtual void startAnimation(void);
|
内存和OpenGL
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| void purgeCachedData(void);
void setDefaultValues(void);
void setGLDefaultValues(void);
void setAlphaBlending(bool bOn);
void setDepthTest(bool bOn);
|
CCDisplayLinkDirector
CCDisplayLinkDirector继承于CCDirector,它实现了mainloop函数,是一个以显示刷新速度同步定时器的Director,也就是可以自动刷新的导演类,它支持60,30,15三种帧数。我们平时使用的也就是它。