没有真正的问题(它做我应该相信的事情),所以不是真正的解决方案。但我会尝试强调正在发生的事情,以及混乱在哪里。我认为这是因为如果您愿意,则将矩形的 rotate="auto" 和 x,y 视为组合变换,因为它会沿路径设置动画。如果将 x,y 更改为 0,0,它将突出显示这一点。
为了让它更清晰一些,我结合了一些具有不同 x,y 值的矩形。它的效果与将变换与旋转结合起来的效果相同。
你会看到绿色的似乎是如何反转的,只是当旋转发生时它更远。
http://jsfiddle.net/fcz69/4/是一个简单的例子来强调正在发生的事情。
animationMotion 元素描述可以在这里找到http://www.w3.org/TR/SVG/animate.html#RotateAttribute它值得一读关于“旋转”的内容,但可能需要一段时间才能理解它,如果不习惯矩阵。
<svg width="600" height="600">
<path d="M200,200
a-50,-50 0 0,0 0,-30
a-50,-50 0 0,1 0,-30" fill="none" stroke="black"/>
<rect x="0" y="0" width="200" height="200"
style="stroke: none; fill: #FFCC33;">
<animateMotion
path="M200,200
a-50,-50 0 0,0 0,-30
a-50,-50 0 0,1 0,-30"
begin="0s" dur="3s" repeatCount="indefinite"
rotate="auto"
/>
</rect>
<rect x="-100" y="100" width="200" height="200"
style="stroke: none; fill: #FF0000;">
<animateMotion
path="M200,200
a-50,-50 0 0,0 0,-30
a-50,-50 0 0,1 0,-30"
begin="0s" dur="3s" repeatCount="indefinite"
rotate="auto"
/>
</rect>
<rect x="-200" y="200" width="200" height="200"
style="stroke: none; fill: #00FF00;">
<animateMotion
path="M200,200
a-50,-50 0 0,0 0,-30
a-50,-50 0 0,1 0,-30"
begin="0s" dur="3s" repeatCount="indefinite"
rotate="auto"
/>
</rect>
</svg>