问题描述
我想在两帧之间进行一次平滑的过渡。动画应该在最后一帧停止。这按预期工作:
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 400 400" width="50%" height="50%">
<path d="M100 200 c-50,-100 150,-100 200,0" stroke="#000000" stroke-width="4" fill="none">
<animate
dur="2"
attributeName="d"
values="M100 200 c50,-100 250,0; M100 200 c-50,0"
keySplines="0.5 0.5 0.5 0.5">
</animate>
</path>
</svg>
但是,我需要指定最后一帧路径两次:第二次在 d
标记中。否则,图像最终会消失。任何纯 SVG 方法可以在每帧只指定一次的情况下制作这样的动画?
解决方法
也许是这样。我颠倒了路径,因此初始状态是基值,并添加了 fill="freeze" 以在完成后保留动画状态。
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 400 400" width="100%" height="100%">
<path d="M100 200 c50,-100 250,-100 200,0" stroke="#000000" stroke-width="4" fill="none">
<animate
dur="2"
attributeName="d"
to="M100 200 c-50,-100 150,0" fill="freeze">
</animate>
</path>
</svg>