WODEDAHUA 2016-03-16 08:40 采纳率: 0%
浏览 3318
已结题

canvas动画,线条被重复绘制该如何解决

请问为什么会出现,所绘线条颜色被加深、粗细不一,感觉前面的被重绘了?我该如何解决来避免这个问题

效果图

代码如下

 var c=document.getElementById("myCanvas");
var context=c.getContext("2d");
context.strokeStyle="RGBA(255,0,0,.1)"
var point=[[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],[-2,-2,-7,-2,-7,-1,-6,-3,-6,-7,-6,-8,-0,-0,-1,-0,-5,-8,-5,-4,-6]]
            var k=0
            var f=setInterval(function(){
                if(k>20){
                    clearInterval(f)
                }else{
                    context.lineTo((point[0][k]-5)*20,point[1][k]*-26)
                   context.stroke()
                }
                k++
            },100)
  • 写回答

1条回答 默认 最新

  • ai2018 2016-03-16 09:44
    关注

    var c = document.getElementById("myCanvas");
    var context = c.getContext("2d");
    context.strokeStyle = "RGBA(255,0,0,.1)"
    ##context.beginPath()
    var point = [
    [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25],
    [-2, -2, -7, -2, -7, -1, -6, -3, -6, -7, -6, -8, -0, -0, -1, -0, -5, -8, -5, -4, -6]
    ]
    var k = 0
    var f = setInterval(function() {
    if (k > 20) {
    context.stroke()
    ## clearInterval(f)
    } else {
    ## context.moveTo((point[0][k] - 5) * 20, point[1][k] * -26)
    ## context.lineTo((point[0][k+1] - 5) * 20, point[1][k+1] * -26)
    }
    k++
    }, 0)
    });
    的确是被重绘了,加##的地方是要注意的地方。
    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统