您现在的位置是:网站首页> 编程资料编程资料
canvas简单连线动画的实现代码解析html5 canvas实现背景鼠标连线动态效果代码
2023-10-12
366人已围观
简介 这篇文章主要介绍了canvas简单连线动画的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
前言:canvas动画入门系列之简单连线动画。虽然简单,但连线动画应用场景还挺多,因此做了个小demo,一通百通。
step1:绘制点
首先创建个标签
设置几个点的坐标
const points = [ [200, 100], //上 [300, 200], //右 [100, 200], //左 [200, 100], //上 [200, 300], //下 [100, 200], //左 [300, 200], //右 [200, 300] ]; const canvas = document.querySelector("canvas"); const ctx = canvas.getContext("2d");然后把点给画出来

points.forEach(([x, y]) => { drawDot(x, y); }); function drawDot(x1, y1, r) { ctx.save(); ctx.beginPath(); //不写会和线连起来 ctx.fillStyle = "red"; //绘制成矩形 ctx.arc(x1, y1, r ? r : 2, 0, 2 * Math.PI); ctx.fill(); ctx.restore(); }step2:绘制线条
我们封装一个方法,传入起点终点,绘制一根线条
function drawLine(x1, y1, x2, y2) { ctx.save(); ctx.beginPath(); //不写每次都会重绘上次的线 ctx.lineCap = "round"; ctx.lineJoin = "round"; var grd = ctx.createLinearGradient(x1, y1, x2, y2); ctx.moveTo(x1, y1); ctx.lineTo(x2, y2); ctx.closePath(); ctx.strokeStyle = "rgba(255,255,255,1)"; ctx.stroke(); ctx.restore(); }step3:线条动画
这里面需要计算两点之间的斜率,然后x坐标每次挪动±1单位,已知斜率和x偏移,即可计算出y的偏移。值得注意的是,这个坐标系和数学中的xy坐标系有点不一样,y轴是反的。然后可以引入额外的参数speed控制速度
function lineMove(points) { if (points.length < 2) { return; } const [[x1, y1], [x2, y2]] = points; let dx = x2 - x1; let dy = y2 - y1; if (Math.abs(dx) < 1 && Math.abs(dy) < 1) { points = points.slice(1); lineMove(points); return; } let x = x1, y = y1; //线条绘制过程中的终点 if (dx === 0) { (x = x2), (y += (speed * dy) / Math.abs(dy)); } else if (dy === 0) { x += (speed * dx) / Math.abs(dx); y = y2; } else if (Math.abs(dx) >= 1) { let rate = dy / dx; x += (speed * dx) / Math.abs(dx); y += (speed * rate * dx) / Math.abs(dx); } drawLine(x1, y1, x, y); points[0] = [x, y]; window.requestAnimationFrame(function() { lineMove(points); }); }主要代码就这么多,先看效果

完整代码
canvas-连线动画
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- html5手机键盘弹出收起的处理html5移动端价格输入键盘的实现可能这些是你想要的H5软键盘兼容方案(小结)HTML5 虚拟键盘出现挡住输入框的解决办法利用HTML5 Canvas制作键盘及鼠标动画的实例分享HTML5 Canvas鼠标与键盘事件demo示例
- 保卫萝卜2 第21关 金萝卜图文攻略_手机游戏_游戏攻略_
- 保卫萝卜2 第17关 金萝卜图文攻略_手机游戏_游戏攻略_
- 保卫萝卜2 第18关 金萝卜图文攻略_手机游戏_游戏攻略_
- 保卫萝卜2 第19关 金萝卜图文攻略_手机游戏_游戏攻略_
- 保卫萝卜2 第20关 金萝卜图文攻略_手机游戏_游戏攻略_
- 保卫萝卜2 第26关 金萝卜图文攻略_手机游戏_游戏攻略_
- 保卫萝卜2 第29关 金萝卜图文攻略_手机游戏_游戏攻略_
- 保卫萝卜2 第30关 金萝卜图文攻略_手机游戏_游戏攻略_
- 天天酷跑UU助手ios新版本刷分无限飞视频教程_手机游戏_游戏攻略_
