在Cocos2dx的基本组成篇里,我简单地介绍了导演的基本概念和含义作用。但他实际要做些什么呢?
在本篇文章里将介绍一下承担着导演作用的导演类Director。
导演类Director 继承自 ref类 才用单例设计模式(即这个类智能拥有一个实例)。
主要功能如下
1、负责场景之间的切换。
2、对视图的访问和OpenGLES接口的封装。
3、游戏的基本控制如暂停游戏、终止游戏等。
4、储存管理游戏中的全局配置信息。
常用方法
static Director * getInstance() 获取导演类实例,范围导演类指针(Director *)。
Scene * getRunningScene() 获取当前正在运行的场景,返回场景类指针(Scene*)。
double getAnimationInterval() 获取当年FPS(帧数)的导数,将其范围。
virtual void setAnimationInterval(double interval) 设置FPS,参数是FPS标准值的倒数,即刷一帧需要的时间。
bool isDisplayStats() 获取是否显示运行状态。
void setDisplayStats(bool displaysStats) 与上相反的设置函数。
float getSecondsPerFrame() 获取每秒的帧数,将其返回。
GLView* getOpenGLView() 获取OpenGLView(渲染引擎类)实例,并返回指针。
void setOpenGLView(GLView * openGLView) 与上相反。
TextureCache* getTextrueCache() 获取纹理缓冲,并返回指针。
bool isPaused() 获取当前场景是否暂停
Size getVisibleSize() 获取可见区域大小
Point getVisibleOrigin() 获取区域坐标原点
void runWithScene(Scene * scene)运行一个指定场景。
void replaceScene(Scene * scene)当前场景替换为指定场景,当前场景将被释放。
void end() 释放运行中场景。
void pause() 调用applicationDidEnterBackground()暂停运行中场景播放的动画。
void resume() 调用applicationWillEnterForeground()播放运行中场景播放的动画。
这两个函数都可以在AppDelegate.cpp下找到,项目在初始化时自动帮你重写好,自己可以进行修改。
void drawScene()绘制场景
void setAlphaBlending(bool on)设置Alpha混合是否开启,Alpha就是透明度,这项技术就是为了实现半透明效果,例如火光后的其他图会被覆盖一层火红色等。
void setDepthTest(bool on) 设置是否开启深度检测,等于检测是一个物体离摄像机有多远。
以下是游戏应用创建一个导演类并设置好配置然后运行场景的一段代码。
关于Director更多可参考官方API:http://api.cocos.com/cn/d7/df3/classcocos2d_1_1_director.html