javascript - 如何重新开始 Canvas 绘制?

标签 javascript canvas html5-canvas

当我点击开始时,我得到了整个圆圈。但是,当我单击清理并再次开始时,先前的部分圆剩余并出现直线。

演示:https://fiddle.jshell.net/1xhkfk73/

 var canvas = document.getElementById("myCanvas");
 var ctx = canvas.getContext("2d");
 var draw = 0;
 var stepDraw = 0;
 ctx.strokeStyle = "#FF0000";
 ctx.translate(0.5, 0.5);
 var delay = 30;
 var drawing = 0;

 function drawCircle(steps) {
   draw = ((2 * Math.PI) / steps);
   stepDraw = draw;

   drawing = setInterval(function() {

     ctx.arc(400, 200, 120, draw, draw, false);
     ctx.stroke();
     draw += stepDraw;
   }, delay)
 }


 $("#click").click(function() {
   drawCircle(120);
 });

 $("#clean").click(function() {
   clearInterval(drawing);
   ctx.clearRect(0, 0, 800, 400);
   
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="click">start</span>
<span id="clean">clean</span>
<canvas id="myCanvas" class="center-block" width="800" height="400">
  Canvas not supported!
</canvas>

最佳答案

试试这个。

你需要关闭你的路径。

 var canvas = document.getElementById("myCanvas");
 var ctx = canvas.getContext("2d");
 var draw = 0;
 var stepDraw = 0;
 ctx.strokeStyle = "#FF0000";
 ctx.translate(0.5, 0.5);
 var delay = 30;
 var drawing = 0;

 function drawCircle(steps) {
   draw = ((2 * Math.PI) / steps);
   stepDraw = draw;
   drawing = setInterval(function() {
     ctx.beginPath();
     ctx.arc(400, 200, 120, draw, draw+stepDraw, false);
     ctx.stroke();
     draw += stepDraw;
   }, delay)
 }


 $("#click").click(function() {
   drawCircle(120);
 });

 $("#clean").click(function() {
   clearInterval(drawing);
   ctx.clearRect(0, 0, 800, 400);
   
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="click">start</span>
<span id="clean">clean</span>
<canvas id="myCanvas" class="center-block" width="800" height="400">
  Canvas not supported!
</canvas>

关于javascript - 如何重新开始 Canvas 绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39322145/

相关文章:

javascript - 如果脚本已经在浏览器缓存中,浏览器还会延迟加载脚本吗?

java - 开源文本本地化库

javascript - HTML5 Canvas 坐标给出了奇怪的 Angular

javascript - 如何使用给定的 Angular 绘制不规则形状的多边形

javascript - 如何在 HTML 5 Canvas 中添加可选文本?

javascript - Drupal查看ajax错误

javascript - 停止传播 jQuery 委托(delegate)/实时函数不起作用

python - pygame 中的 surface.blit() 函数是什么?它有什么作用?它是如何工作的?

javascript - 使用processing.js 单击后加载 .pde 文件

javascript - 如何使用 Fabric.js 将 URL 中的图像添加到 HTML Canvas 中并调整其大小?