Re: <animateMotion> specification clarification

Hi Nikolas,

> This example is not correct, how shall the user agent know to which element
> the animation should be applied?
> It works as expected if you'd assign xlink:href="#MyTriangle" to your
> <animateMotion> element.
>
> You either have to specify a target for your animation element using
> xlink:href=#someIRI" or include it as child element of the target element.
> I just played a bit around with your test in Opera, and it's confusing:
>
> If I try:
>  <path d="M-25,-12.5 L25,-12.5 L 0,-87.5 z" fill="yellow", stroke="red"
> stroke-width="7.06" id="MyTriangle"/>
> <rect width="30" height="30"/>
>  <animateMotion dur="6s" repeatCount="indefinite" rotate="auto" ><mpath
> xlink:href="#path1"/></animateMotion>
>
> Then Opera animates both the path & the rect, using the same animateMotion
> operation.
> Sounds like a bug to me, unless I'm missing some SMIL detail. Erik?

if you look at the relevant fragment:

<svg>
...
 <svg id="MySymbol">
   <path d="M-25,-12.5 L25,-12.5 L 0,-87.5 z" fill="yellow"
stroke="red" stroke-width="7.06" id="MyTriangle" >
   </path>
    <animateMotion dur="6s" repeatCount="indefinite" rotate="auto" >
      <mpath xlink:href="#path1"/>
    </animateMotion>
 </svg>
...
</svg>

then the animateMotion lives inside a container (the 'svg' element).
http://www.w3.org/TR/SVG/animate.html#AnimationAttributesAndProperties
indicates that svg elements can be animated, and this is why it seems
that Opera's behaviour is correct - the container (and hence its
children) is animated.  This also explains why adding the rect to that
container causes both to be animated.

Cheers,
    -Shane

Received on Tuesday, 12 October 2010 07:31:13 UTC