Thomas Meinike: SVG Attributwert während der Animation abfangen

Beitrag lesen

[Nachtrag:]

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.

Mit dem ASV 6.0 klappt es doch wie gewuenscht -- ich hatte versehentlich nur ein Mal nach dem Laden den animVal-Wert abgefragt und am Anfang ist dieser natuerlich gleich dem baseVal-Wert.

Testcode mit Ausgabe des animVal-Wertes aller 100ms in einen Textknoten:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">

<svg onload="init()">

<defs>
    <script type="text/javascript">
      <![CDATA[

function init()
        {
          setInterval("document.getElementById('wert').firstChild.setData(document.getElementById('rechteck').y.animVal.value)",100);
        }

]]>
    </script>
  </defs>

<rect id="rechteck" x="100" y="100" width="500" height="20" stroke="blue" stroke-width="3px" fill="#000099">
    <animate attributeName="y" attributeType="XML" begin="0s" dur="10s" repeatDur="indefinite" fill="freeze" from="450" to="0"/>
  </rect>

<text x="20" y="50" id="wert">y</text>

</svg>

MfG, Thomas