html5圆点连线,HTML5 Canvas两点之间的折线连接动画

JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

let c = document.getElementById("theCanvas");

let ctx = c.getContext("2d"),

halfWidth = window.innerWidth / 2,

halfHeight = window.innerHeight / 2;

ctx.canvas.width = window.innerWidth;

ctx.canvas.height = window.innerHeight;

c.addEventListener('click', addDot);

let prevX = 0,

prevY = 0,

cx = 0,

cy = 0;

function addDot(e) {

let size = 0;

ctx.fillStyle = 'white';

ctx.strokeStyle = 'white';

ctx.beginPath();

if (e.x && e.y) {

drawDot(e.x, e.y, size);

} else {

drawDot(e.clientX, e.clientY, size);

}

}

function drawDot(x, y, s) {

if (s !== 10) {

ctx.arc(x, y, s, 0, 2 * Math.PI);

ctx.fill();

ctx.stroke();

s++;

requestAnimationFrame(function() {

drawDot(x, y, s);

});

} else {

if (prevX !== 0 && prevY !== 0) {

addLine(x, y, prevX, prevY);

} else {

prevX = x;

prevY = y;

}

}

}

function addLine(x, y, px, py) {

let goingForward = false,

goingUp = false;

ctx.beginPath();

ctx.moveTo(px, py);

cx = px;

cy = py;

if (cx < x) {

goingForward = true;

}

if (cy > y) {

goingUp = true;

}

drawLine(x, y, goingForward, goingUp);

}

function drawLine(x, y, gf, gu) {

let metX = false,

metY = false;

c.removeEventListener('click', addDot);

ctx.lineTo(cx, cy);

ctx.stroke();

if (gf) {

if (cx >= x) {

metX = true;

}

if (cx < x && !metX) {

cx += 4;

}

} else {

if (cx <= x) {

metX = true;

}

if (cx > x && !metX) {

cx -= 4;

}

}

if (gu) {

if (cy <= y) {

metY = true;

}

if (cy > y && !metY) {

cy -= 4;

}

} else {

if (cy >= y) {

metY = true;

}

if (cy < y && !metY) {

cy += 4;

}

}

if (!metY || !metX) {

requestAnimationFrame(function() {

drawLine(x, y, gf, gu);

});

} else {

prevX = x;

prevY = y;

c.addEventListener('click', addDot);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值