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

2019-01-28 16:25:23于海丽
  •                 }  

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

    XML/HTML Code复制内容到剪贴板
    1. ctx.drawImage(this.cacheCanvas , this.x-this.r , this.y-this.r);  

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

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

    XML/HTML Code复制内容到剪贴板
    1. <!doctype html>   <html lang="en">  
    2. <head>       <meta charset="UTF-8">  
    3.     <style>           body{   
    4.             padding:0;                margin:0;   
    5.             overflow: hidden;            }   
    6.         #cas{                display: block;   
    7.             background-color:rgba(0,0,0,0);                margin:auto;   
    8.             border:1px solid;            }   
    9.     </style>       <title>测试</title>  
    10. </head>   <body>  
    11.     <div >           <canvas id='cas' width="800" height="600">浏览器不支持canvas</canvas>  
    12.         <div style="text-align:center">1000个圈圈对象也不卡</div>       </div>