我有while循环绘制圆圈:
actx.shadowColor = 'rgba(0, 0, 0, 1)';
while (len--) {
var point = data[len];
actx.beginPath();
actx.arc(point[0] - 15000, point[1] - 15000, 10, 0, Math.PI * 2);
actx.closePath();
actx.fill();
}
对我来说似乎有点慢,所以我在想如何优化它。我发现fill()
函数的使用时间最长,所以我尝试将它放在循环之后,但它只绘制了最后一个圆。
答案 0 :(得分:1)
一些优化:
重构代码:
// test data
var data=[];
for(var i=0;i<100;i++){data.push([i+15000+30,i+15000+30]);}
// calculate PI2 outside the loop instead of every time in the loop
var PI2=Math.PI*2;
actx.shadowColor = 'rgba(0, 0, 0, 1)';
// beginpath once outside the loop
actx.beginPath();
var len=data.length;
while (len--) {
var point = data[len];
// draw
actx.arc(point[0]-15000, point[1]-15000,10,0,PI2);
// closepath will close the current circle's subpath
actx.closePath();
}
// just fill once when done drawing
actx.fill();