Thomas Meinike: SVG Attributwert während der Animation abfangen

Beitrag lesen

Hallo,

<rect x="100" y="100" width="500" height="20" stroke="blue" stroke-width="3px" fill="#000099">
<animate id="wolke7" attributeName="y" attributeType="XML" begin="0s" dur="10s" repeatDur="indefinite" fill="freeze" from="450" to="0" />
</rect>
...
Der Balken läuft aber ohne Reaktion durch und gibt mir aber ohne die if-Schleife nur das "y" von attributeName= aus. Wie kriege ich den aktuellen Wert einer Animation ermittelt?

Wenn das rect-Element id="rechteck" bekommt, dann erhaelt man den aktuellen animierten Wert von y so:

document.getElementById("rechteck").y.animVal.value

(den Ausgangswert ueberigens mit baseVal statt animVal).

Leider klappt das mit dem ASV 3.01 gar nicht und im ASV 6.0 preview1 sehe ich zwar beim Aufruf von

alert(document.getElementById("rechteck").y);

die Ausgabe [object SVGAnimatedLength], aber waehrend der Animation wird stets der baseVal (also 100) statt dem animVal erhalten.

Als Workaround mit setInterval() / clearInterval() eine eigene Funktion schreiben, die zeitlich parallel zur Animation laeuft und die Zwischenwerte ausrechnet, wobei man dann die Animation auch gleich via DOM und setAttribute() selbst bauen koennte ...

MfG, Thomas