浅谈利用缓存来优化HTML5 Canvas程序的性能

2020-04-24 18:59:39易采站长站整理

                        this.cacheCtx.stroke();   
                        j++;   
                    }   
                    this.cacheCtx.restore();   
                }  

然后在接下来的动画中,我只需要把圈圈对象的离屏canvas画到主canvas中,这样,每一帧调用的canvasAPI就只有这么一句话:

XML/HTML Code复制内容到剪贴板

ctx.drawImage(this.cacheCanvas , this.x-this.r , this.y-this.r);  

跟之前的for循环绘制比起来,实在是快太多了。所以当需要重复绘制矢量图的时候或者绘制多个图片的时候,我们都可以合理利用离屏canvas来预先把画面数据缓存起来,在接下来的每一帧中就能减少很多没必要的消耗性能的操作。

下面贴出1000个圈圈对象流畅版代码:
  

XML/HTML Code复制内容到剪贴板

<!doctype html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <style>  
        body{   
            padding:0;   
            margin:0;   
            overflow: hidden;   
        }   
        #cas{   
            display: block;   
            background-color:rgba(0,0,0,0);   
            margin:auto;   
            border:1px solid;   
        }   
    </style>  
    <title>测试</title>  
</head>  
<body>  
    <div >  
        <canvas id=’cas’ width="800" height="600">浏览器不支持canvas</canvas>