在Cocos2d-x中,把统筹游戏大局的类抽象为导演类(Director),Director是整个cocos2d-x引擎的核心,是整个游戏的导航仪。游戏中的一些经常使用操做就是由Director来控制的,好比OpenGL ES的初始化,场景的转换,游戏暂停继续的控制,世界坐标和GL坐标之间的切换,对节点的控制等,还有一些游戏数据的保存调用,屏幕尺寸的获取等都要由Director类来管理控制的。html
由于Director是游戏项目的总导演,会常常调用进行一些控制,因此该Director利用了单件设计模式,也就是整个游戏里只有一个导演类。用getInstance() 方法取得Director的实例。设计模式
Tips:在cocos2d-x2.x的版本中使用sharedDirector()方法来获取导演类对象,而在3.x的版本中使用getInstance()来获取,不过sharedDirector()也能够使用。缓存
Director类的继承关系以下:app
DisplayLinkDirector继承CCDirector,是一个能够自动刷新的导演类。它支持60/一、1/30和1/15三种动画间隔(帧间隔)。函数
Director类的主要公共函数以下:测试
函数名动画 |
返回类型spa |
描述.net |
getRunningScene设计 |
场景类 |
获取当前正在运行的场景 |
getAnimationInterval |
浮点型 |
获取每帧的时间 |
setAnimationInterval |
浮点型 |
设置每帧的时间 |
isDisplayStats |
布尔型 |
返回是否在屏幕左下角显示每帧的时间 |
setDisplayStats |
无 |
设置是否在屏幕左下角显示每帧的时间 |
getSecondsPerFrame |
浮点型 |
获取每帧的时间(单位为秒) |
getOpenGLView |
GL视图 |
获取绘制全部对象的OpenGL视图 |
无 |
设置绘制全部对象的OpenGL视图 |
|
布尔型 |
导演类对象是否暂停 |
|
整型 |
获取从导演类开始运行的帧数 |
|
投影类 |
获取OpenGL投影 |
|
无 |
设置OpenGL投影 |
|
无 |
设置OpenGL接口 |
|
布尔型 |
切换的场景是否接收清除信息 |
|
节点类 |
获取一个在主场景遍历后遍历的节点对象 |
|
无 |
设置一个在主场景遍历后遍历的节点对象 |
|
尺寸 |
获取屏幕大小(单位为点) |
|
尺寸 |
获取像素级的屏幕大小(单位为像素) |
|
尺寸 |
获取可见屏幕大小 |
|
矢量 |
获取可见屏幕的方向 |
|
矢量 |
转化为OpenGL坐标系 |
|
矢量 |
转化为UI坐标系 |
|
无 |
运行当前场景 |
|
无 |
挂起当前场景,压入栈中 |
|
无 |
从栈中弹出场景 |
|
无 |
从栈中弹出全部场景直到根场景 |
|
无 |
从栈中弹出全部场景直到某个等级 (等级为0为导演,等级为1为根场景) |
|
无 |
替换当前场景 |
|
无 |
结束游戏 |
|
无 |
暂停游戏 |
|
无 |
恢复游戏 |
|
无 |
中止动画 |
|
无 |
开始动画 |
|
无 |
绘制场景 |
|
无 |
移除全部缓存数据 |
|
无 |
基于配置信息设置默认值 |
|
无 |
设置OpenGL默认值 |
|
无 |
设置OpenGL是否使用alpha通道 |
|
无 |
设置是否测试OpenGL深度 |
|
无 |
设置表面像素大小(不一样于屏幕大小) |
|
浮点型 |
获取表面像素大小 |
|
调度类 |
获取时间调度对象 |
|
无 |
设置时间调度对象 |
|
动做管理类 |
获取动做管理对象 |
|
无 |
设置动做管理对象 |
|
事件调度类 |
获取事件调度对象 |
|
无 |
设置事件调度对象 |
|
渲染器 |
返回渲染器 |
|
浮点型 |
返回控制台 |
|
浮点型 |
获取帧率 |
在新建的HelloWorld项目中,打开AppDelegate.cpp,咱们能够看到以下代码:
[cpp] view plain copy
在HelloWorldScene.cpp中有:
[cpp] view plain copy
由此看来,Director不愧是整个游戏的“导演”。它在游戏中无所不在,大到整个游戏的控制,小到获取屏幕的尺寸,起着相当重要的做用。