Thomas Meinike: [SVG] Animationsattribute ändern, ohne Animation zu resetten

Beitrag lesen

Hallo,

Problem:
Dies hat allerdings immer zur Folge, dass die Animation wieder bei ihrer Ausgangsposition beginnt (im Beispiel also bei einem Drehwinkel von 0°). Lässt sich das durch einen Trick verhindern?

Du schreibst, dass Drehungen per JavaScript nicht gewuenscht sind, aber der dur-Attributwert durch eine Funktion veraendert wird. Insofern ist also doch JS im Spiel?!

Falls der Ansatz vom anderen Thomas noch nicht zum Ziel gefuehrt hat und JS nicht ausgeschlossen ist, probiere es mal mit der Aenderung des dur-Wertes via repeat-Ereignis, also onrepeat -- hier mal mit einer Linie demonstriert (dur-Wert wird nach jeweils 360° halbiert):

<!-- Linie mit animierter Transformation -->
  <line x1="50" y1="50" x2="150" y2="150" stroke="#F00">

<animateTransform attributeName="transform" attributeType="XML"
      type="rotate" from="0,100,100" to="360,100,100" begin="0s" dur="10s"
      repeatDur="indefinite" fill="freeze"
      onrepeat="evt.target.setAttribute('dur',parseFloat(evt.target.getAttribute('dur'))/2);
      evt.target.ownerDocument.getElementById('duration').firstChild.nodeValue=evt.target.getAttribute('dur')"/>

</line>

<!-- Textbereich zur Ausgabe des aktuellen dur-Wertes -->
  <text x="20" y="20">dur = <tspan id="duration">10</tspan> s</text>

MfG, Thomas