购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 Director类

Director 类就像一个大总管,即管理游戏中各个场景之间的切换,设置和获得notification 节点,控制游戏的暂停、继续和结束等,又管理其他相关类的实例。Director 类在整个项目中都只有一个实例,即它是一个单件类,这种以单件类形式存在的类,引擎中还有几个,如动作管理类(ActionManager)、事件分发类(EventDispatcher)、定时器类(Scheduler)、纹理缓存类(TextureCache)和渲染类(Renderer)等。

Director类的主要功能函数包括场景函数、视图信息函数、管理器函数和控制函数。

2.1.1 场景函数

场景函数包括切换、进栈和出栈等函数,如表2-1所示。

表2-1 场景函数表

通过这些函数,在程序中可以实现对游戏中各个场景之间的管理,对这些函数的使用如程序片段2-2所示。

程序片段2-2 场景相关函数使用

游戏中每一次只能运行一个场景,当要从一个场景切换到另外一个场景时,可以使用replaceScene 函数或者 pushScene 函数,这两者的区别是,前者会把上一个场景中的元素删除,而后者不会,当要恢复到上一个场景时,后者直接使用 popScene 函数,从栈中把上一个场景弹出即可,而前者还是会把当前场景删除,然后执行上一个场景的代码。这样执行的结果是,对于前者,在内存中,始终只有一个场景的数据,而后者,同时会有两个场景的数据存在。当两个场景来回切换比较频繁时,可以使用 pushScene 的方式,这样场景转换的速度快于 replaceScene 方式,对于其他方式的场景切换,则使用函数 replaceScene 的方式,这样可以避免内存的负担。

2.1.2 视图信息函数

视图信息函数包括获得视图原点、大小等,如表2-2所示。

表2-2 视图函数

这三个函数都是相对设计分辨率而言的。当设计分辨率为960×540时,getWinSize返回的大小就是设计分辨率。而对于后两个函数,当屏幕分辨率为 960×640,适配方式为NO_BORDER 时,getVisibleOrigin 函数返回的是(75,0),getVisibleSize 返回的是(810,540),对这两个函数的使用,引擎封装了类VisibleRect供开发者在程序中使用。

2.1.3 管理器函数

管理器函数包括设置和获得各类管理类的实例,如表2-3所示。

表2-3 管理器函数表

通过这些函数,可以获得它们相应的对象,然后在程序中使用这些对象来实现相应的功能,部分函数使用如程序片段2-3所示。

程序片段2-3 管理器函数使用

2.1.4 控制函数

控制函数包括暂停、继续和结束等,如表2-4所示。

表2-4 控制函数表

在引擎提供的 HelloWorld 实例中,就用到了该表中的一些函数,在 AppDelegate 类的applicationDidFinishLaunching函数中调用了程序片段2-4中的代码。

程序片段2-4 setAnimationInterval函数使用

当程序进入后台调用函数 applicationDidEnterBackground 时,调用了表中的 stopAnim-ation 函数来停止动画的播放;当程序又回到前台调用 applicationWillEnterForeground 函数时,又调用了表中的startAnimation函数来开始播放动画。

表2-4中的前4个函数用于控制整个程序的执行状态。当调用end函数时,整个程序的生命周期也就结束了。在HelloWorld的menuCloseCallback函数中,有程序片段2-5中所示的代码。

程序片段2-5 end函数调用 EcuZWGdW8zrIFdcY54Aebnw1/eLVfYlhM5WZoxH1vGIVfuPRzQYIf6upWo+15e5N

点击中间区域
呼出菜单
上一章
目录
下一章
×