3

我想为一个矩形设置动画,使其遵循迄今为止使用的给定路径animateMotion。这就是我得到的:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<g>
   <rect height="40" width="40" style="fill:#777; stroke:none;"/>
   <animateMotion fill="freeze" path="M 0 0 Q 190 160 150 70 T 200 150 T 300 200 T 200 200" dur="3.14159s" repeatCount="indefinite"/>
</g>
<path d="M 0 0 Q 190 160 150 70 T 200 150 T 300 200 T 200 200" style="fill:none;stroke:#F00;stroke-width:5"/>

现在我的问题是:如何让矩形跟随路径(已经实现),矩形(20 20)的中心始终在路径上?这可以通过 SVG 提供的方式实现吗?

4

1 回答 1

3

当然,只需向矩形添加一个变换。

html, body, svg {
  height: 100%;
  width: 100%;
}
<svg>
    <g>
       <rect transform="translate(-20,-20)" height="40" width="40" style="fill:#777; stroke:none;"/>
       <animateMotion fill="freeze" path="M 0 0 Q 190 160 150 70 T 200 150 T 300 200 T 200 200" dur="3.14159s" repeatCount="indefinite"/>
    </g>
    <path d="M 0 0 Q 190 160 150 70 T 200 150 T 300 200 T 200 200" style="fill:none;stroke:#F00;stroke-width:5"/>
</svg>

translate 将矩形原点从 0,0 移动到矩形中心。

于 2012-11-08T08:19:12.123 回答