jürgen mietke: svg animation starten stoppen pausieren über frame

hallo svgler,

kann mir jemand sagen wie ich eine animation starten, stoppen und pausieren kann? und das während ich einen button in einem anderen frame drücke.

das ist das zu animierende objekt:

<rect cx="-4563" cy="530" width="0.5%" height="35%" style="fill:none;stroke:red;stroke-width:20">
      <animateMotion id="theCursMove" calcMode="linear"
       path="M400 510 L1400 510"
       dur="5s" begin="indefinite" fill="freeze" onbegin="" onend=""/>
   </rect>

verzweifelte grüße
jürgen

  1. Hallo,

    kann mir jemand sagen wie ich eine animation starten, stoppen und pausieren kann? und das während ich einen button in einem anderen frame drücke.

    das ist das zu animierende objekt:

    <rect cx="-4563" cy="530" width="0.5%" height="35%" style="fill:none;stroke:red;stroke-width:20">
          <animateMotion id="theCursMove" calcMode="linear"
           path="M400 510 L1400 510"
           dur="5s" begin="indefinite" fill="freeze" onbegin="" onend=""/>
       </rect>

    Das ist fuer alle Animationen im Dokument machbar mit svgroot.pauseAnimations() bzw. svgroot.unpauseAnimations(), siehe http://www.datenverdrahten.de/svglbc/?code=un_pause_anim.

    Ohne genaue Codekenntnis sollte es etwa so aus dem Frame-Kontext in einen anderen Frame hinein funktionieren:

    var svgdoc=parent.frames["framename"].document.embeds["svg_embed_name"].getSVGDocument();
    var svgroot=svgdoc.getDocumentElement();

    svgroot.pauseAnimations();
    svgroot.unpauseAnimations();

    Bei einer bestimmten Animation funktioniert das offenbar nicht ueber ihre ID:

    svgdoc.getElementById("theCursMove").pauseAnimations();

    Versuche alternativ mal, dem Attribut dur den Wert 0 zuzuweisen:

    svgdoc.getElementById("theCursMove").setAttribute("dur","0");

    MfG, Thomas

    --
    SVG - Learning By Coding
    http://www.datenverdrahten.de/svglbc/
    1. hallo thomas,

      svgroot.pauseAnimations();
      svgroot.unpauseAnimations();

      also das funktioniert erstmal!

      svgdoc.getElementById("theCursMove").setAttribute("dur","0");

      und das simuliert eine <stop>-funktion! klasse. danke! weißt du ncoht ein loesung, das das zu animierende objekt gleich beim objektaufruf sichtbar (aber nicht bewegt wird, sondern erst auf knopfdruck). denn momentan wird es nicht angezeigt, es sei denn, ich starte die animation.

      jm

      1. Hallo,

        weißt du ncoht ein loesung, das das zu animierende objekt gleich beim objektaufruf sichtbar (aber nicht bewegt wird, sondern erst auf knopfdruck). denn momentan wird es nicht angezeigt, es sei denn, ich starte die animation.

        Versuche es mal mit der Methode beginElement(): http://www.datenverdrahten.de/svglbc/?code=begin_endElement.

        MfG, Thomas

        1. hallo thomas,

          danke für dein posting.
          geht die funktion beginElement auch von einer anderen svg-grafik in einem anderen frame aufzurufen?

          hier ist es ja in ein und derselben svg-graphik...

          Versuche es mal mit der Methode beginElement(): http://www.datenverdrahten.de/svglbc/?code=begin_endElement.

          MfG, Thomas

          danke dir schon mal,

          jürgen

          1. Hallo,

            geht die funktion beginElement auch von einer anderen svg-grafik in einem anderen frame aufzurufen?

            hier ist es ja in ein und derselben svg-graphik...

            Aus dem Frame-Kontext heraus sollte das so laufen:

            window.parent.frames.items("zielframename").document.embeds["svgembedname"].getSVGDocument().getElementById("IDderAnimation").beginElement();

            Wichtig ist hier die Referenzierung ueber items(), weil der Aufruf aus dem SVG-DOM heraus erfolgt.

            MfG, Thomas