在cocos2d-x引擎中,CCDirector类是整个游戏的组织和控制核心,游戏的运行规则,游戏内的CCScene(场景)、布景(CCLayer)、角色(CCSprite)等的运动,均由CCDirector管理,其在游戏中起着指定游戏规则让游戏内的场景、布景和任务有序的运行。在整个游戏里面,一般只有一个导演,游戏开始和结束时,都需要调用CCDirector的方法完成游戏初始化或销毁工作.在Cocos2d-x中是很重要的一个类,用于统筹管理,主要完成以下工作:
- 初始化游戏和销毁游戏;
- 管理调度场景;
- 调整设置OpenGL信息;
- 获取、设置游戏的相关细节;
使用方法:Director::getInstance()->MethodName
类CCDirector继承关系图
属性相关
//获得当前运行的场景,cocos2dx同时只能运行一个场景 Scene* getRunningScene(); //获取fps值 double getAnimationInterval(); //设置fps值 void setAnimationInterval(double dValue); //fps是否是显示状态 bool isDisplayStats(); //设置是否显示fps void setDisplayStats(bool bDisplayStats); //获取每帧秒数 float getSecondsPerFrame(); //获取openGLView GLView* getOpenGLView(); //设置openGLView void setOpenGLView(GLView *pobOpenGLView); //判断是否暂停 bool isPaused(); //获取调用到现在的所有帧数 unsigned int getTotalFrames(); //判断被替换的场景是否接收到cleanup事件 //replace方式会,而push方式则不会 bool isSendCleanupToScene(void);
窗口相关
//返回以点为单位openGL视图的大小 const Size& getWinSize() const; //返回以像素为单位openGL视图的大小 Size getWinSizeInPixels() const; //返回以点为单位的 OpenGL 视图的可见大小. Size getVisibleSize() const; //返回以点为单位的 OpenGL 视图的初始化时的可见大小 Vec2 getVisibleOrigin() const; //UIKit的坐标转换到一个OpenGL坐标 使用当前布局(横向或纵向)有效的(多)触摸坐标 Vec2 convertToGL(const Vec2& point); //一个OpenGL坐标转换到UIKit的坐标 点组成的窗口调用有效的节点上面的点 Vec2 convertToUI(const Vec2& point);
场景管理相关
//根据给定的场景进入 Director的主循环 只能调用他运行你的第一个场景 void runWithScene(Scene *scene); //暂停执行正在运行的场景中,pushing一个在堆栈上推暂停的场景。 新的场景将被执行. void pushScene(Scene *scene); //从队列中弹出一个场景。 这个场景将替换正在运行的场景. void popScene(); //从队列中弹出所有的场景,直到只有根场景在队列中 这个场景将替换正在运行的场景. void popToRootScene(); //弹出从队列中的所有场景,直到它到达 level. void popToSceneStackLevel(int level); //用一个新的替换正在运行的场景。终止正在运行的场景。 仅在有一个正在运行的场景的时候调用他. void replaceScene(Scene *scene); //结束执行,释放正在运行的场景。 void end(); //暂停正在运行的场景。 void pause(void); //恢复暂停的场景 预定的定时器将被再次激活。 “推迟执行”的时间将是0(如果游戏没有暂停) void resume();
内存和OpenGL
//移除所有cocos2dx缓冲数据 void purgeCachedData(void); //设置默认值 void setDefaultValues(void); //设置OpenGL默认值 void setGLDefaultValues(void); //开关OpenGL alpha混合通道 void setAlphaBlending(bool bOn); //设置景深测试 void setDepthTest(bool bOn);