【发布时间】:2015-01-01 13:50:57
【问题描述】:
我正在尝试制作一个圆环图,我想在值发生变化时为半圆路径设置动画,但“d”路径的变换看起来并不“自然”。这是我到目前为止得到的:
<svg height="400" width="400" style="background: #fff">
<g transform="translate(200,200), scale(75)" stroke-width="0.01" stroke="white">
<path d="M 1 0 L 2 0 A 2 2 0 0 1 -1.03903 -0.166952 L -0.519515 -0.0834762 A 1 1 0 0 0 1 0" stroke-width="0.01" stroke="black" fill="green">
<animate attributeName="d" from="M 1 0 L 2 0 A 2 2 0 1 1 0.10467191248588789 -1.9972590695091477 L 0.052335956242943946 -0.9986295347545738 A 1 1 0 1 0 1 0" to="M 1 0 L 2 0 A 2 2 0 0 1 -1.7492394142787915 0.9696192404926743 L -0.8746197071393957 0.48480962024633717 A 1 1 0 0 0 1 0" dur="1s" repeatCount="indefinite"></animate>
</path>
</g>
</svg>
我创建了一个 jsfiddle 来现场观看,转换看起来很可怕 :)
我希望有一种方法可以像在路径之后那样对其进行动画处理,这样动画看起来就像圆圈继续变大或变小,但在动画时不会向奇怪的方向移动。 在此先感谢丹尼尔。
【问题讨论】:
-
您需要绘制圆弧,以使大圆弧和扫掠标志在动画期间不会改变。 Firefox 拒绝此类动画正是因为它们无法正常工作。
-
我可以像圆的动画路径一样创建动画吗?
-
即使你避免从弧形标志处突然跳跃,你也不会得到你想要的动画。当您为
d属性设置动画时,点会以直线过渡。你真的必须使用 JavaScript 来让点沿弧线的曲线动画。 d3 有很多可用的示例,您可以查看它们的源代码并进行调整。 -
我不想依赖第 3 方库,我看到您可以使用路径(也可以是曲线)来制作动画,但我不知道如何使用路径圆来变形