canvas教程

提高Canvas性能的技巧

字号+ 作者:H5之家 来源:H5之家 2016-01-16 14:15 我要评论( )

提高Canvas性能的技巧,详细性能差别:,一般情况下:clearRect的性能优于fillRect优于canvas.wid,提高Canvas性能的技巧一.预渲染福州白癜风医院http://www.kkk

导读:提高Canvas性能的技巧,详细性能差别:,一般情况下:clearRect的性能优于fillRect优于canvas.wid,提高Canvas性能的技巧一.预渲染福州白癜风医院整理分享错误代码:varcanvas=document.getElementById("myCanvas");varcontext=this.canvas.

提高Canvas性能的技巧

提高Canvas性能的技巧

一.预渲染 福州白癜风医院 整理分享

错误代码:

var canvas = document.getElementById("myCanvas");

var context = this.canvas.getContext('2d');

var drawAsync = eval(Jscex.compile("async", function () {

while (true) {

drawMario(context);

$await(Jscex.Async.sleep(1000));

}

}))

drawAsync().start();

正确代码:

var canvas = document.getElementById("myCanvas");

var context = this.canvas.getContext('2d');

var m_canvas = document.createElement('canvas');

m_canvas.width = 64;

m_canvas.height = 64;

var m_context = m_canvas.getContext('2d');

drawMario(m_context);

var drawAsync = eval(Jscex.compile("async", function () {

while (true) {

context.drawImage(m_canvas, 0, 0);

$await(Jscex.Async.sleep(1000));

}

}))

drawAsync().start();

这里m_canvas的宽度和高度控制得越小越好。

二.尽量少调用canvasAPI

错误代码:

for (var i = 0; i < points.length - 1; i++) {

var p1 = points[i];

var p2 = points[i + 1];

context.beginPath();

context.moveTo(p1.x, p1.y);

context.lineTo(p2.x, p2.y);

context.stroke();

}

正确代码:

context.beginPath();

for (var i = 0; i < points.length - 1; i++) {

var p1 = points[i];

var p2 = points[i + 1];

context.moveTo(p1.x, p1.y);

context.lineTo(p2.x, p2.y);

}

context.stroke();

三.尽量少改变CANVAS状态

错误代码:

for (var i = 0; i < STRIPES; i++) {

context.fillStyle = (i % 2 ? COLOR1 : COLOR2);

context.fillRect(i * GAP, 0, GAP, 480);

}

正确代码:

context.fillStyle = COLOR1;

for (var i = 0; i < STRIPES / 2; i++) {

context.fillRect((i * 2) * GAP, 0, GAP, 480);

}

context.fillStyle = COLOR2;

for (var i = 0; i < STRIPES / 2; i++) {

context.fillRect((i * 2 + 1) * GAP, 0, GAP, 480);

}

四.重新渲染的范围尽量小

错误代码:

context.fillRect(0, 0, canvas.width, canvas.height);

正确代码:

context.fillRect(20, 20, 100, 100);

五.复杂场景使用多层画布

<canvas width="600" height="400" style="position: absolute; z-index: 0">

</canvas>

<canvas width="600" height="400" style="position: absolute; z-index: 1">

</canvas>

六.不要使用阴影

context.shadowOffsetX = 5;

context.shadowOffsetY = 5;

context.shadowBlur = 4;

context.shadowColor = 'rgba(255, 0, 0, 0.5)';

context.fillRect(20, 20, 150, 100);

七.清除画布

详细性能差别:

一般情况下:clearRect的性能优于fillRect优于canvas.width = canvas.width;

八.像素级别操作尽量用整数

几种取整数的方法:

rounded = (0.5 + somenum) | 0;

rounded = ~ ~(0.5 + somenum);

rounded = (0.5 + somenum) << 0;

五星文库wxphp.com包含总结汇报、办公文档、文档下载、教程攻略、专业文献、旅游景点、教学研究、考试资料、应用文书、IT计算机以及提高Canvas性能的技巧 等内容。

本文共2页12

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评