Thomas J.S.: (SVG): setCurrentTime im onload?

Beitrag lesen

Hallo,

Offenbar scheint es doch nicht am setInterval zu liegen. Ich habe dein Beispiel mal folgendermaßen abgeändert:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  onload="Init(evt,1900)">

<defs>

<script type="text/javascript">
      <![CDATA[
var svgroot;
      function Init(evt,t)
      {
        svgroot=evt.target.ownerDocument.documentElement;
        svgroot.setCurrentTime(t);
        alert(svgroot.getCurrentTime());
      }

]]>
    </script>

</defs>
<circle cx='100' cy='100' r='10' onclick="alert(svgroot.getCurrentTime());"/>
</svg>


>   
> und bei dem Klick auf den Kreis kommt auch wieder nur die "normale" Zeit ohne 1900. svgroot müsste bei dieser Deklaration doch überall verfügbar sein, oder nicht?  
  
Das Poblem ist, dass getCurrentTime immer bei 0 anfängt.  
Du musst die Zeit also immer wieder neu setzen und dabei die vergangene Zeit dazuaddieren:  
\----------------------------------------------  
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>  
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">  
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="Init(evt,1900)">  
  <defs>  
    <script type="text/javascript">  
      <![CDATA[  
  var svgroot;  
  var z;  
       function Init(evt,t) {  
         svgroot=evt.target.ownerDocument.documentElement;  
         svgroot.setCurrentTime(t);  
         alert(svgroot.getCurrentTime());  
   z = svgroot.getCurrentTime();  
       }  
    function sZeit() {  
     zeit = z;  
     svgroot.setCurrentTime(zeit);  
   alert(svgroot.getCurrentTime());  
     z = svgroot.getCurrentTime();  
    }  
      ]]>  
    </script>  
  </defs>  
<circle id="c1" cx='100' cy='100' r='10' onclick="sZeit();"/>  
</svg>  
  
\---------------------------------------  
  
alert() muss du dann aus sZeit() entfernen.  
  
Grüße  
Thomas (der andere)