有一个离题的 SVG 问题 =>如何按顺序对 UIBezier 线进行动画处理
当然这个可以在smil上实现
这就是我所做的
<svg viewBox="0 0 500 150" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<marker id="dot" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="5" markerHeight="5">
<circle cx="5" cy="5" r="5" fill="#fff" stroke="red" stroke-width="1" />
</marker>
</defs>
<path d="" fill="none" stroke="#000" stroke-width="1.2" marker-start="url(#dot)" marker-mid="url(#dot)" marker-end="url(#dot)">
<animate attributeName="d" begin="0s" dur="4s" attributeType="XML" values="
M20,120 50,130 120,120 180,100 220,130 300,120 340,125 410,90 490,140;
M20,120 50,50 120,120 180,100 220,130 300,120 340,125 410,90 490,140;
M20,120 50,50 120,120 180,20 220,130 300,120 340,125 410,90 490,140;
M20,120 50,50 120,40 180,20 220,130 300,120 340,125 410,90 490,140;
M20,120 50,50 120,40 180,20 220,50 300,120 340,125 410,90 490,140;
M20,120 50,50 120,40 180,20 220,50 300,70 340,125 410,90 490,140;
M20,120 50,50 120,40 180,20 220,50 300,70 340,55 410,90 490,140;
M20,120 50,50 120,40 180,20 220,50 300,70 340,55 410,90 490,30;
M20,120 50,50 120,40 180,20 220,50 300,70 340,55 410,40 490,30;
M20,120 50,50 120,40 180,20 220,50 300,70 340,85 410,40 490,30;
M20,120 50,130 120,120 180,100 220,130 300,120 340,125 410,90 490,140;" repeatCount="indefinite" keyTimes="0; 0.1; 0.15; 0.27; 0.30; 0.40; 0.45; 0.80; 0.90; 0.97; 1"/>
</path>
</svg>
但正如你从他们的动画图片中看到的那样,存在某种抖动
是否可以使用 SVG 动画 - smil 来实现这种行为?

以相等的间隔为点设置动画看起来像这样:
我认为反弹是最简单的脚本:
当然,基于此,您可以自动计算坐标和时间,并且只传输最终值的数组。这已经是一个完整的插件,但这样的任务不是问题;-)