如何在画布上绘制绘图线动画

Mufeed艾哈迈德

我创建了一些在画布上相互连接的线。现在,我想在画布上绘画时为这些线条设置动画。

谁能帮忙吗?

这是我的代码和小提琴网址:

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.moveTo(0,0,0,0);
ctx.lineTo(300,100);
ctx.stroke();

ctx.moveTo(0,0,0,0);
ctx.lineTo(10,100);
ctx.stroke();

ctx.moveTo(10,100,0,0);
ctx.lineTo(80,200);
ctx.stroke();

ctx.moveTo(80,200,0,0);
ctx.lineTo(300,100);
ctx.stroke();

http://jsfiddle.net/s4gWK/1/

我了解您希望使用动画使线沿路径中的点逐渐延伸。

演示:http : //jsfiddle.net/m1erickson/7faRQ/

您可以使用此功能来计算路径上的航路点:

// define the path to plot
var vertices=[];
vertices.push({x:0,y:0});
vertices.push({x:300,y:100});
vertices.push({x:80,y:200});
vertices.push({x:10,y:100});
vertices.push({x:0,y:0});

// calc waypoints traveling along vertices
function calcWaypoints(vertices){
    var waypoints=[];
    for(var i=1;i<vertices.length;i++){
        var pt0=vertices[i-1];
        var pt1=vertices[i];
        var dx=pt1.x-pt0.x;
        var dy=pt1.y-pt0.y;
        for(var j=0;j<100;j++){
            var x=pt0.x+dx*j/100;
            var y=pt0.y+dy*j/100;
            waypoints.push({x:x,y:y});
        }
    }
    return(waypoints);
}

然后,您可以使用requestAnimationFrame为每个增量线段设置动画:

// calculate incremental points along the path
var points=calcWaypoints(vertices);


// variable to hold how many frames have elapsed in the animation
// t represents each waypoint along the path and is incremented in the animation loop
var t=1;


// start the animation
animate();

// incrementally draw additional line segments along the path
function animate(){
    if(t<points.length-1){ requestAnimationFrame(animate); }
    // draw a line segment from the last waypoint
    // to the current waypoint
    ctx.beginPath();
    ctx.moveTo(points[t-1].x,points[t-1].y);
    ctx.lineTo(points[t].x,points[t].y);
    ctx.stroke();
    // increment "t" to get the next waypoint
    t++;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在画布上绘制平滑的椭圆形

来自分类Dev

如何在画布上重新绘制以调整大小而不会模糊?

来自分类Dev

如何在画布上绘制具有径向渐变的圆?

来自分类Dev

如何在多个画布HTML5上绘制圆?

来自分类Dev

如何在HTML画布上绘制位图文件?

来自分类Dev

如何在画布上用画笔绘制棋盘图案?

来自分类Dev

[WPF]如何在画布上绘制网格?

来自分类Dev

iOS绘图线动画

来自分类Dev

如何在Android画布上绘制圆角多边形?

来自分类Dev

如何在画布上绘制内嵌svg(在DOM中)?

来自分类Dev

如何在画布绘制的元素上添加材质样式的阴影?

来自分类Dev

如何在画布上绘制带有动画的圆轨迹的箭头?

来自分类Dev

如何在画布上绘制读取JSON?

来自分类Dev

如何在画布上绘制多个半透明矩形?

来自分类Dev

如何在画布上绘制RelativeLayout?

来自分类Dev

如何在画布上停止动画?

来自分类Dev

如何在画布元素上绘制视频?

来自分类Dev

如何在画布上随机绘制对象

来自分类Dev

在画布上绘制动画曲线

来自分类Dev

Java:如何在画布上绘制?

来自分类Dev

如何在Android画布上绘制局部圆角矩形?

来自分类Dev

如何在WPF中拖动画布上的按钮

来自分类Dev

如何在带有角度的高图上添加绘图线?

来自分类Dev

如何在绘图中的绘图线下绘制矩形?

来自分类Dev

滚动时如何在画布上保持绘图?

来自分类Dev

如何在画布上设置路径动画-Android

来自分类Dev

如何在Python中随机移动画布上的球?

来自分类Dev

iOS绘图线动画

来自分类Dev

在画布上绘制动画曲线