Cocos2d-js cc.director介绍
来源:互联网 发布:java生成日志文件 编辑:程序博客网 时间:2024/04/27 16:20
环境设定
首先,在进入游戏之前,导演对象会设置游戏的运行环境:
设置显示游戏的视图,包含视图的投射,像素格式,等等。
设置游戏运行帧率。
为当前导演对象初始化计时器,动作管理器和事件管理器。
为当前导演对象初始化贴图缓存和渲染器。
导演对象的其他设置
执行主循环
主循环中每一次循环绘制一幅画面到屏幕上。下面是每一帧绘制的详细过程:
计算从上一帧开始到现在的时间,这将会被用于提供调试信息。
让导演对象中的计时器执行被计划的任务。
通过事件管理器通知cc.Director.EVENT_AFTER_UPDATE事件。
清空游戏屏幕。
如果需要进入下一个场景则进行场景切换。
遍历当前场景中的节点并更新节点的空间转换矩阵以及其他必要信息,然后发送绘制指令给渲染器。
通过事件管理器通知cc.Director.EVENT_AFTER_VISIT事件。
渲染器按顺序执行所有渲染指令来最终绘制整个场景到屏幕上。
通过事件管理器通知cc.Director.EVENT_AFTER_DRAW事件。
增加全局总帧数。
除此之外,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的效果类的转场特效来切换场景。
// 转场特效持续两秒
var
transitionTime = 2;
// 创建下一个场景
var
nextScene =
new
cc.Scene();
// 使用下一个场景创建转场特效场景
var
transitionScene =
new
cc.TransitionProgressInOut(transitionTime, nextScene);
// 替换运行场景为转场特效场景
cc.director.runScene(transitionScene);
Cocos2d-JS引擎中还提供其他很多种预设转场特效
环境设置和属性
由于导演对象控制整个游戏运行环境,导演对象中还提供一些常用的设置和属性:
// 获取游戏主循环是否被暂停
var
paused = cc.director.isPaused();
// 设置或获取动画帧间隔,这个设置会直接影响帧率
var
interval = cc.director.getAnimationInterval();
cc.director.setAnimationInterval(value);
// 设置或获取导演对象的内容放缩比例
var
scale = cc.director.getContentScaleFactor();
cc.director.setContentScaleFactor(scaleFactor);
// 设置或获取游戏世界可视窗口的原点和大小
var
origin = cc.director.getVisibleOrigin();
var
size = cc.director.getVisibleSize();
// 获取游戏世界大小,winSize的大小通常等同于设计分辨率,而winSizeInPixel的大小是游戏世界的像素大小
var
winSize = cc.director.getWinSize();
var
winSizeInPixel = cc.director.getWinSizeInPixels();
// 设置或获取调试信息是否被显示
var
isDisplaying = cc.director.isDisplayStats();
cc.director.setDisplayStats(displayStats);
// 设置或获取视图,它指向`cc.view`
var
view = cc.director.getOpenGLView();
cc.director.setOpenGLView(openGLView);
// 设置或获取WebGL/OpenGL的投影,
// 可能的投影类型包括:cc.Director.PROJECTION_2D, cc.Director.PROJECTION_3D, cc.Director.PROJECTION_CUSTOM
cc.director.getProjection();
cc.director.setProjection(projection);
导演对象系统事件
导演对象还有一些内建的系统事件:
cc.Director.EVENT_AFTER_DRAW:这个事件在每一帧图像的绘制完成之后被触发。
cc.Director.EVENT_AFTER_VISIT:这个事件在每一帧场景树遍历之后被触发。
cc.Director.EVENT_AFTER_UPDATE:这个事件在每一帧计时器任务执行完成之后被触发。
cc.Director.EVENT_PROJECTION_CHANGED:这个事件在导演对象的投影属性被修改之后触发。
源引:http://www.ipastimes.com/post/4.html
- Cocos2d-js cc.director介绍
- Cocos2d-js cc.director介绍
- Cocos2d-js cc.director介绍
- Cocos2d-js cc.director介绍
- cocos2d lua绑定感悟---像cc.Sprite,cc.Director这些是如何识别的
- Cocos2d-JS中的cc.LabelTTF
- Cocos2d-JS中的cc.LabelAtlas
- cocos2d-js:cc.LoaderScene.preload
- Director 介绍
- 【cocos2d-js官方文档】六、cc.async
- 【cocos2d-js官方文档】八、cc.game
- 【cocos2d-js官方文档】九、cc.loader
- 【cocos2d-js官方文档】十一、cc.path
- 【cocos2d-js官方文档】十五、cc.sys
- cocos2d-js cc.DrawNode画图参考大全
- 【Cocos2d-js官方文档】 九、cc.loader
- 【Cocos2d-js官方文档】八、cc.game
- cocos2d-js 的 cc.callFunc 参数
- 0918Android基础自定义属性
- 面试题精解之一: 二叉树
- 求二叉树的深度
- linux内核自锁旋spinlock常用宏解释
- Connections between cities (hdu 2874 LCA)
- Cocos2d-js cc.director介绍
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] C. A Problem about Polyline
- Linux中的STDIN_FILENO和STDOUT_FILENO
- python多线程编程:生成者和消费者
- 从头开始敲代码之《从BaseApplication/Activity开始(四)》
- 自定义View以及View的属性的使用(重点,xml中定义属性的值),包括Bitmap存为jpg样式(可以模仿修改照片不喜欢的地方)
- java生成范围内的纯数字随机数
- 二叉树中的那些常见的面试题
- 2 Add Two Numbers