花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 20|回复: 2

SVG动态模拟示波图

[复制链接]
  • TA的每日心情
    擦汗
    2026-8-13 08:02
  • 签到天数: 1898 天

    [LV.Master]伴坛终老

    3306

    主题

    13万

    回帖

    29万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2026-8-13 08:16 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    实现原理:JS 动态生成 SVG path 元素 d 属性值,由 setTimeout、setInterval 定时器或 requestAnimationFrame(请求关键帧动画)或其它机制不断重绘 path 路径。下例 path 元素 d 属性值仅用到 M、H、L 三个绘图指令,代码有详尽说明,支持在线预览:

    <h1>点击页面任意地方运行/暂停动画</h1>
    <svg id="msvg" widt="800" height="400" viewBox="0 0 400 200" xmlns="http://www.w3.org/2000/svg">
        <path id="p1" d="M0 100 H400" fill="none" stroke="green" stroke-width="4" stroke-dasharray="4" />
    </svg>
    
    <script>
        var timeID, go = false; // timeID : 定时器标识、go : 动画开关
    
        // 页面点击事件
        document.onclick = () => {
            go = !go; // go开关取反
            draw(); // 执行draw 函数
        };
            
        function draw() {
            var tt = 15;  // 路径节点总数
            var str = ''; // 路径字符串
            // 遍历节点、生成动态路径
            Array.from({length: tt}).forEach((_,k) => {
                var x = (k + 1) * (360 / tt); // 节点X坐标(360取值依据是viewBox宽度去头尾)
                // 节点Y坐标 :节点序列号被2整除定在Y轴中心,否则按viewBox高度值取随机值
                var y = k % 2 === 0 ? 100 : Math.floor(Math.random() * 200);
                // 拼接路径字串 :开始时是M指令,其余L指令
                str += k === 0 ? `M0 100 H${x}` : ` L${x} ${y}`;
            });
            var path = `${str}L400 100`; // 路径终点
            p1.setAttribute('d', path);  // 给path d属性赋值
            // setTimeout定时器递归调用本函数 :根据 go 开关运行或取消动画
            go ? timeID = setTimeout(draw, 200) : cancelTimeout(timeID);
        }
    </script>
        

    核心在于路径各个节点的算法及其路径字符串的拼接。上例仅是演示,可根据需求做相应调整。

    评分

    参与人数 1威望 +50 金钱 +100 经验 +50 收起 理由
    红影 + 50 + 100 + 50 匠心独运,细节精致入微!

    查看全部评分

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1898

    主题

    33万

    回帖

    40万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2026-8-13 14:57 | 显示全部楼层
    这路径是不断重绘的,拼接起来就是心电图了
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2026-8-13 10:29
  • 签到天数: 809 天

    [LV.10]以坛为家III

    579

    主题

    4万

    回帖

    10万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪缤纷心情心曲飞扬花好月圆飞龙在天音画大师天籁妙音共看流星风雨同行我心永远喜乐安康花潮贵宾

    发表于 2026-8-13 15:05 | 显示全部楼层
    原来是一条直线,任意一点就变成劝态曲线了。这很稀奇。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2026-8-13 17:54 , Processed in 0.083765 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表