我在http://jsfiddle.net/emanuensis/NNvjA/上尝试了一个简单 SVG 图形的 SMIL 动画,这个想法是每个mouseover
向上或向下的单词都会导致黄色冰球朝那个方向穿梭,停了一小段路,由mouseout
事件决定......并从该位置等待进一步mouseover
的 s。
不幸的是,现实(在 FF 和 Chrome 中)并非如此。
ABA 形式(其中 A 是任意数量的 ups,B 是 down - 或 vv)导致第二个 A 的 noop。
第一个 Afreezes
属性的值 在第一个它的类型(向上或向下)的最后一个事件(可能有许多总是重新归位)上获得的值。即B 从那个位置开始(归巢)。
即使在第一个 Afreezes
中也没有加法。即在穿梭之前每个事件的家。
freeze
也许还有另一种在短时间内强制有效的方法(即不是一直到最后——这是一个方向,而不是一个幅度。)
这里很繁琐
<?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.mouseout+1s"
attributeName="x"
additive="sum"
fill = "freeze"
restart = "whenNotActive"
from=""
to="50"
dur="3s"
repeatCount="1" />
<animate id="rt"
begin="tup.mouseover"
end="tup.mouseout+1s"
attributeName="x"
additive="sum"
fill = "freeze"
restart = "whenNotActive"
from=""
to="250"
dur="3s"
repeatCount="1"/>
</rect>
</svg>