I am trying to add a timing function to a simple SVG SMIL animation. Apparently timing/easing can be set with the keySplines
attribute, however in my example it does not work:
<svg xmlns="http://www.w3.org/2000/svg" width="214" height="214" viewBox="0 0 24 24">
<rect style="fill:#000;" width="4" height="4" x="3" y="11">
<animateTransform attributeName="transform"
begin="0s" dur="2s" type="translate" from="0 0" to="40 0" repeatCount="4" fill="freeze"
calcMode="spline"
keySplines="0.4, 0, 0.2, 1"/>
</rect>
<rect style="fill:#ff0000;" width="4" height="4" x="3" y="16">
<animateTransform attributeName="transform"
begin="0s" dur="2s" type="translate" from="0 0" to="40 0" repeatCount="4" fill="freeze" />
</rect>
</svg>
Here is a demo: http://jsfiddle.net/q4e4049s/ , the black one should have easing
keyTimes="0;1"
, essentially you're depending on an implicitkeyTimes
if you don't add that, which seems fine to me. The SVG spec is IMHO not 100% clear that an implicitkeyTimes
should be used in this case. – Erik Dahlström