【cocos2d-js官方文档】三、Bake功能使用说明

设计意图

在游戏开发的过程中,经常会遇到作为UI或者不怎么修改的背景的层(Layer), 这些层内容并不怎么变动。 而在游戏的渲染过程中,这些层往往又会消耗大量的渲染时间,特别是比较复杂的UI界面,比如:在Canvas渲染模式中,一个Button会调用9次绘图(drawImage)。在复杂一些的UI场景中,会出现UI的绘图次数远大于实际游戏的绘图次数的情况,这对于性能资源非常稀缺的手机浏览器来说,会带来灭顶之灾。

对于上述情况,我们给cc.Layer加入了bake的接口,
调用了该接口的层,会将自身以及其子节点都备份(烘焙/bake)到一张画布(Canvas)上,只要自身或子节点不作修改,下次绘制时,将直接把画布上的内容绘制上去。这样,原来需要调用N次绘图的层,就只需要调用一次绘图了。 当该层不需要bake时,可以调用unbake来取消该功能。

使用场景

  1. 复杂UI层。 UI层含有大量的面板(Panel),按钮(Button)等,这些控件的绘制会有大量的绘图调用,而这些控件并不经常修改。
  2. 游戏中作为静态的背景或障碍物的层。

使用方法

使用bake功能非常简单: 将需要bake的节点元素加入到一个cc.Layer或其子类(cc.LayerColor,cc.LayerGradient)对象中,然后调用该对象的bake函数就可以了。
示例代码:

var bakeLayer = cc.Layer.create();
this.addChild(bakeLayer);

for(var i = 0; i < 9; i++){
   var sprite1 = cc.Sprite.create(s_pathGrossini);
   if (i % 2 === 0) {
      sprite1.setPosition(90 + i * 80, winSize.height / 2 - 50);
   } else {
      sprite1.setPosition(90 + i * 80, winSize.height / 2 + 50);
   }
     sprite1.rotation = 360 * Math.random();
     bakeLayer.addChild(sprite1);
}
bakeLayer.bake();               //start the bake function

更多信息,可查看我们的测试例(js-tests)的Bake Layer test.

注意事项

  1. 对于子节点经常会变的层, 启用bake功能,会给游戏性能带来额外的开销,建议对于不常修改子节点的层才开启该功能。
  2. 该功能仅在Canvas渲染模式下有效, 在JSB与WebGL渲染模式下调用bake函数,不会产生效果。

转载自:http://www.douapp.com/post/2434

时间: 2024-08-06 23:51:43

【cocos2d-js官方文档】三、Bake功能使用说明的相关文章

《Spring5官方文档》新功能(4,3)

<Spring5官方文档>新功能 原文链接 译者:supriseli Spring框架的新功能 这一章主要提供Spring框架新的功能和变更. 升级到新版本的框架可以参考.Spring git. 内容列表 Spring 5.x框架新的功能 Spring 4.x框架新的功能 Spring 3.x框架新的功能 Spring FrameWork 5.0新的功能 JDK 8+和Java EE7+以上版本 整个框架的代码基于java8 通过使用泛型等特性提高可读性 对java8提高直接的代码支撑 运行时

ArcGIS API For JS官方文档解析教程

ArcGIS API For JavaScript(八)之Arcade ArcGIS API For JavaScript官方文档(一)之关于API ArcGIS API For JavaScript官方文档(一)之默认API配置 ArcGIS API For JavaScript官方文档(七)之编辑 ArcGIS API For Javascript官方文档(三)之从Web服务器取回数据 ArcGIS API For JavaScript官方文档(二)之默认的API字符串 ArcGIS API

Hui 2.x.js 官方文档

基础方法 // 判断值是否是指定数据类型 var result = hui.isTargetType("白签软件", "string"); //=>true var result = hui.isTargetType(123, "number"); // =>true var result = hui.isTargetType("false", "boolean"); // =>false

node.js官方文档chm电子书的制作

制作软件:WebCHMSetup2.22.zip,http://www.onlinedown.net/soft/31553.htm 制作好的电子书:Node.js(v6.10.2).zip 参考链接:https://www.zhihu.com/question/37005587

bootbox.js官方文档

简介 Bootbox.js是一个小型的JavaScript库,基于Bootstrap模态框开发,用于创建可编程的对话框. 不像原生的alert等对话框,所有的Bootstrap模态框生成的都是非阻塞事件.所以 在使用confirm()对话框时,请记住这一点,因为它不是本地确认对话框的替代. 任何取决于用户选择的代码都必须放在回调函数中. alert alert是只有单个按钮的对话框,按ESC键或单击关闭按钮可关闭对话框. bootbox.alert("Your message here…&quo

比官方文档更易懂的Vue.js教程!包你学会!

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由蔡述雄发表于云+社区专栏 蔡述雄,现腾讯用户体验设计部QQ空间高级UI工程师.智图图片优化系统首席工程师,曾参与<众妙之门>书籍的翻译工作.目前专注前端图片优化与新技术的探研. 2016年,乃至接下来整个2017年,如果你要问前端技术框架什么最火,那无疑就是前端三巨头:React.Angular.Vue.没错,什么jQuery,seaJs,gulp等都逐渐脱离了热点.面试的时候不吹上一点新技术,好像自己就不是搞前端的似的.当然,

学习使用Volley的多种基本功能-来自官方文档

官方文档地址:https://developer.android.com/training/volley/requestqueue.html 之前一直没看到这个,原来官方已经正式有关于Volley的文档了,而且这是被建议使用的Network库. 因为之前有写过简单的Volley请求怎么写,下面介绍的都是我之前不知道的用法: 1.先上代码: 1 Cache cache = new DiskBasedCache(getCacheDir(),1024*1024); 2 Network network

官方文档 恢复备份指南三 Recovery Manager Architecture

本节讨论以下问题: About the RMAN Environment                        关于RMAN环境 RMAN Command-Line Client                            RMAN命令行 RMAN Channels                                                      RMAN通道 RMAN Repository                                

2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合

这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等).当前2D Toolkit版本为2.4. 这是一篇系列教程,全文共13节(官方文档为4章,不过为了每节有明确目的,我根据官方文档的标题拆成了13节),下面是本系列教程的所有链接: 2DToolkit官方文档中文版打地鼠教程(一):初始设置 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机

(三)Kafka0.8.2官方文档中文版系列-topic配置参数

前文链接: (一)Kafka0.8.2官方文档中文版系列-入门指南 (二)Kafka0.8.2官方文档中文版系列-API Topic-level configuration(主题级别的参数配置) 与主题相关的配置具有全局默认值(参考broker部分)和每个主题可选重写(broker部分有明确提示).如果主题没有重写这些配置,使用全局默认设置.可以使用--config添加一个或者多个自定义选项.下面这个例子创建了一个名为my-topic的主题,它自定义了最大消息大小和刷新速率: > bin/kaf