小游戏canvas直接操作ImgaeData时的几个优化点
前不久在处理一个canvas绘图需求时,经过不断测试优化,将重绘一帧的时间由400ms降低至20ms左右,基本满足了要求。特此记录一下优化方向。
设备环境:Android,360*720,pixelRatio=3
1.尽量减少canvas操作
通常一帧的画面由多层内容叠加绘制而成,这时应把中间态画面绘制到与imageData大小相等的数组中,一帧内容绘制完全后一次性绘制到canvas
var buff = new Uint8Array(360*720*4)
var layers = [];
for(var k in layers){
layers[k].render();//画入buff
}
2.尽量减少getImageData
除去必须获取原有数据的场合,可使用createImageData代替,再putImageData到指定位置。
var imgData = ctx.createImageData(360,720);
//大小不变的imageData可考虑全局保存
3.不要遍历ImageData.data
由于ImageData.data为只读,看起来只能遍历赋值,但其实它有set方法,可以一次性将数据填入。
var imgdata = ctx.createImageData(2,2); var data = new Uint8Array(16); //遍历data填入数据(遍历数组比imageData快得多)
imgdata.data.set(data); ctx.putImageData(data, 0, 0);
小游戏canvas直接操作ImgaeData时的几个优化点的更多相关文章
- 微信小游戏canvas操作
		这几天在做项目的时候,想在游戏画面之前,在Canvas上面画上一张背景图,代码如下 let ctx = canvas.getContext('2d') export default cl ... 
- 【Python】猜数小游戏(文件操作)
		人生苦短,我用Python 关键词 1.多用户 2.字典记录所有成绩 3.每次游戏轮数&总游戏次数&平均每次游戏需要多少轮 字典Dictionary.列表List.元组Tuple差异化 ... 
- 历时一周,unity3d+xtion打造我的第一个休闲体感小游戏《空降奇兵》
		1.游戏介绍 本游戏属于休闲小游戏,主要操作如下: 菜单控制:举起左手或右手,点击左边或者右边的菜单:挥动左手或右手,选择关卡: 操作方式:玩家跳跃,游戏中的伞兵从飞机开始降落:玩家通过控制伞兵的左右 ... 
- 小程序canvas生成海报保存至手机相册
		小程序canvas画图保存至手机相册 (1)可直接展示生成的海报 .因手机分辨率不同可能导致生成的海报会有细微差别,这里隐藏canvas海报,页面正常设置海报样式保存时保存隐藏的canvas海报 (2 ... 
- 用python实现自动玩21点小游戏
		1. 背景 前段时间发现一个论坛上(https://npupt.com/blackjack.php)有21点小游戏. 这个21点小游戏的规则是每个人开局都会获得随机点数,如果觉得点数小,可以继续摸牌. ... 
- Vue+WebSocket+ES6+Canvas 制作「你画我猜」小游戏
		Vue+WebSocket+ES6+Canvas 制作「你画我猜」小游戏 转载 来源:jrainlau 链接:https://segmentfault.com/a/1190000005804860 项 ... 
- 如何开发一个简单的HTML5 Canvas 小游戏
		原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wiz ... 
- canvas drag 实现拖拽拼图小游戏
		博主一直心心念念想做一个小游戏- 前端时间终于做了一个小游戏,直到现在才来总结,哈哈- 以后要勤奋点更新博客! 实现原理 1.如何切图? 用之前的方法就是使用photoshop将图片切成相应大小的图 ... 
- Android使用学习之画图(Canvas,Paint)与手势感应及其应用(乒乓球小游戏)
		作为一个没有学习Android的菜鸟,近期一直在工作之外努力地学习的Android的使用. 这周看了下Android的画图.主要是Canvas,Paint等,感觉须要实践下.下午正好有空,就想整一个乒 ... 
随机推荐
- css解决图片拉伸问题
			在实际场景中,我们经常会遇到图片大小固定的需求,但是由于原始图片大小,比例不一样,不同图片以相同的大小展示会参差不齐.解决方法就是object-fit或者background-size属性.他们的区别 ... 
- Java基础 --  Collection和Iterator接口的实现
			Collection是描述所有序列容器(集合)共性的根接口,它可能被认为是一个“附属接口”,即因为要表示其他若干个接口的共性而出现的接口.另外,java.util.AbstractCollection ... 
- nacos作为配置中心
			分布式配置中心 在微服务架构中,为什么需要一个统一的配置中心呢?如果用一句话来说那就是方便管理,降低出错的可能.比如:你开发环境是一套配置,测试环境是一套,生产环境又是一套.你如果手动去修改,难免会出 ... 
- gzy的摄影梦
			好像当身高180的摄影师啊. 记录一下素材,等自己有相机了,就一一实现. 竟然有人在看哎. 一袭红衣的女子,将手伸出窗外,开心的看这漫天大雪. 今天的晚霞,近处是蓝色,颜色逐渐变淡,一直延伸到远处.( ... 
- ajax+json
			ajax学习: 1.ajax的概念 局部刷新技术.不是一门新技术,是多种技术的组合,是浏览器端的技术 2 为什么要使用ajax? 传统的模式 是 发送请求 到 服务器 ,服务器经过 ... 
- IDEA 常用配置
			调节代码字体大小 设置:File --- Settings... --- Editor --- General --- 勾选Change font size(Zoom) with Ctrl + Mou ... 
- Python——阶段总结(一)
			import xlrd # 读xlsx import xlsxwriter # 写xlsx import urllib.request # url请求,Python3自带,Python2与3中urll ... 
- Storage 002 电商数据库设计
			[用户模块] 账户登录:邮箱/用户名/已验证手机 密码 如果将所有字段都放到一张表里存储? 数据插入异常 只想插入一个值的 由于需要主键信息,插入的一行变成新的一行,和原来的记录无关. ... 
- L1-Day11
			1.问问他能不能来.[我的翻译]Ask him wether he can come.[标准答案]Ask him whether/if he can come.[对比分析]天呐 whether都能拼写 ... 
- 医学图像数据(二)——TCIA完整数据集下载方式
			1. 构建下载环境 l TCIA数据集下载文件为.jnlp格式(JNLP(Java Network Launching Protocol )是java提供的一种可以通过浏览器直接执行java应用程序 ... 
