在cocos2d-x里面,游戏的任何时间,只有一个场景对象实例处于运行状态,该对象可以作为当前游戏内容的整体包对象。
环境设定
进入游戏之前,导演会设置游戏的运行环境:
设置游戏视图,包含视图的投射,像素格式等。
设置游戏的运行帧率。
初始化定时器,动作管理器和事件管理器(为当前导演对象服务)
初始化贴图缓存和渲染器(为当前导演对象服务)
导演对象的其他设置。
执行主循环
主循环中每一次循环渲染一副画面到屏幕上。下面是每一帧绘制的详细过程:
计算上一帧开始到现在的时间(用于提供调试信息)
让导演对象中计时器执行被计划的任务。
通过时间管理器通知cc.Director.EVENT_AFTER_UPDATE事件。
清空屏幕。
如果需要进入下一个场景则进行场景切换。
遍历当前场景中的节点并更新节点的空间转换矩阵以及其他必要的信息,然后发送绘制指令给渲染器。
通过时间管理器通知cc.Director.EVENT_AFTER_VISI事件。
渲染器按顺序执行所有渲染指令来最终绘制整个场景到屏幕上。
增加全局总帧数。
cc.director同样提高一些函数来控制主循环:
暂停主循环:cc.director.pause()
恢复主循环:cc.director.resume()
场景管理
通常来说,一个游戏包含用于不同用例的几个场景,程序应该通过cc.director的API来控制场景流。
// 让导演对象执行目标场景
cc.director.runScene(scene);
// 获取当前正在执行的场景
var scene = cc.director.getRunningScene();
// 将一个新场景推入场景栈中,并替换运行场景为这个新场景
var scene = cc.director.pushScene(scene);
// 将栈顶的场景推出栈,并替换运行场景为推出后栈顶的新场景
cc.director.popScene();
// 将栈中除了栈底的根场景以外的所有场景推出,并替换运行场景为根场景。
cc.director.popToRootScene();
除此以外,你可以通过cc.TransitionScene的效果类设置转场特效
环境设置和属性
由于导演对象控制整个游戏运行环境,导演对象中还提供一些常用的设置和属性:
导演对象系统事件
cc.director.EVENT_AFTER_DRAW: 这个事件在每一帧图像绘制完成之后被触发。
cc.director.EVENT_AFTER_VISIT: 这个事件在每一帧场景树遍历之后被触发。
cc.director.EVENT_AFTER_UPDATE: 这个事件在每一帧计时器任务执行完成之后被触发。
cc.director.EVENT_PROJECTION_CHANGED: 这个事件在导演对象的投影属性被修改之后触发。
本文转自:博客园 - Mike丶,转载此文目的在于传递更多信息,版权归原作者所有。