我在http://jsfiddle.net/emanuensis/H68jS尝试了一个简单的 SVG 图形的 SMIL 动画这个想法是,每个鼠标向上或向下移动都会导致黄色圆盘朝那个方向移动 1 秒并停止......并从该位置等待进一步的鼠标悬停。
不幸的是,现实(在 FF 和 Chrome 中)是非常多变的。有时它似乎采用了'fill =“freeze”'属性,有时它会一直向上或向下重新启动,有时它会在多次迭代之前停止的地方重新启动。
这是我第一次使用http://www.w3.org/TR/smil-animation上的规范,所以我想我做错了什么,或者遗漏了一些属性,但我不知道是哪个或在哪里。
繁琐的代码:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg id="svg2"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="400" height="500"
version="1.1">
<text id="tup" x="48 " y="33" >up </text>
<text id="tdn" x="235" y="33" >down</text>
<rect id="trect" style="fill:yellow;stroke:red;"
width="20" height="20" x="75" y="0" rx="5" ry="5" >
<animate id="tr"
begin="tdn.mouseover"
end="tdn.mouseover+1s"
attributeName="x"
additive="sum"
fill = "freeze"
restart = "whenNotActive"
to="50"
dur="5s"
repeatCount="1" />
<animate id="rt"
begin="tup.mouseover"
end="tup.mouseover+1s"
attributeName="x"
additive="sum"
fill = "freeze"
restart = "whenNotActive"
to="250" dur="5s"
repeatCount="1"/>
</rect>
</svg>