html5中怎么使用canvas实现简单连线动画
发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,这篇"html5中怎么使用canvas实现简单连线动画"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们
千家信息网最后更新 2024年12月13日html5中怎么使用canvas实现简单连线动画
这篇"html5中怎么使用canvas实现简单连线动画"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"html5中怎么使用canvas实现简单连线动画"文章吧。
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中怎么使用canvas实现简单连线动画"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
动画
内容
坐标
线条
坐标系
文章
斜率
知识
矩形
篇文章
终点
起点
速度
偏移
之间
代码
价值
单位
参数
大部分
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
如何进行数据库的概念设计
服务器查看宝塔地址
web多数据库支持管理工具
客户端 服务器
快照适合存储在什么数据库
数据库中的的数据如何备份
网络安全法 监管机构
原生安卓怎么改服务器
软件开发学徒中专学历可以吗
数据库子窗体的解释意思
惠普打印机rpc服务器异常
实况手游服务器失败
ftp服务器推荐
东城区信息化软件开发服务电话
怎样设置无线网络安全机制
服务器换地址作用
万得数据库官网
北京系统 网络安全报备
jpa数据库优势
国三网络技术模拟卷
方舟生存进化圣斗士服务器怎么进
大连实力医疗健康软件开发
单位开展网络安全知识培训
怎么将数据库中的数据相加
ff14狗区服务器在哪
导航连接不上服务器怎么办
幻塔小米渠道服有哪些服务器
东南大学网络安全保研
数据库统计每门课的选课人数
中山通讯软件开发报价表