Vi forholder oss til følgende animasjonselementer som kan plasseres inne
i et grunnelement(rect,circle osv.) eller i et g(ruppe)-element:
animate. For å animere en bestemt attributt.
animateTransform. For å animere transformasjoner som skalering og rotasjon
animateMotion. For å animere at elementet følger en path
Hver av disse har en rekke attributter for å styre animasjonen. Vi kommer ikke innom alle mulige variater, men
har ambisjoner om å vise hovedtrekkene og peke på noen
ikke helt opplagte effekter (eller mange på sådanne).
Denne delen av SVG er relativt komplisert.
Attributtene er i hovedsak selvforklarende: Vi vil at animasjonen skal starte 5s etter
at siden er lastet, at den skal vare i 30s og flytte
sirkelen fra cx=20 til cx=3050, og dette skal holde på i "evig" tid.
Merk at attributeType kan ha verdiene XML, CSS eller auto.
Vi forsøker å kontrollere animasjonen med Javascript:
Merk at attributten fill sørger for at elementet forblir der animasjonen slutter.
Javascriptkoden er slik:
_demo1.js
function goTo(newx){
var ae=document.getElementById("a1");
ae.setAttribute("from",ae.getAttribute("to"));
ae.setAttribute("to",""+newx);
ae.beginElement();
}
Attributtene to of from angir at vi skal animere fra 0
til 360 grader om punktet 75,75. (Du kan få ganske pussige effekter dersom du
leker med grader og har forskjellig rotasjonssentrum i from og to.)
Vi forsøker å konytrollere denne transformasjonen med Javascript.
function rotateT(addV){
var ta=document.getElementById("ta1");
var fromvals=ta.getAttribute("from").split(" ");
var tovals=ta.getAttribute("to").split(" ");
ta.setAttribute("from",ta.getAttribute("to"));
var newV=parseInt(tovals[0])+addV;
ta.setAttribute("to",""+newV+' '+tovals[1]+' '+tovals[2]);
ta.beginElement();
}
animateMotion
Her definerer vi en path og vi lar et element følge denne stien.
_demo4
<svg id="demo4" width="200" height="200" viewBox="0 0 200 200"
style="background:beige" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- The epath we will follow-->
<path id="path1" d="M10,190 C 70,-10 130,-10 190,190"
fill="none" stroke="blue" stroke-width="2" />
<!-- moving circle -->
<circle cx="" cy="" r="10" fill="red">
<animateMotion dur="10s" repeatCount="indefinite">
<mpath xlink:href="#path1"/>
</animateMotion>
</circle>
</svg>
Programmert
Vi kan selvsagt også lage våre egne animasjoner ved hjelp av tidsstyring
med Javascript