SVG
Børre Stenseth
Animasjon >Rotasjon

Rotasjoner

Hva

Vi kan animere geometrien ved hjelp av animasjonselementer. Microsoft IE henger ikke med på de løsningens om er laget nedenfor.

Vi bruker en enkel "propell" som gjennomgangseksempel:

_demo1

Jeg har brukt et polygon med et animateTransform som barn. Sirkelen i midten ligger utenfor transformasjonen. Parameterne angir at vi skal animere et XML-element. Altrnativet er å bruke CSS. Mer om dette senere. Vi har dessuten sagt at vi skal gjøre en rotasjon fra 0 til 360 grader om punktet 0,0. En rotasjon skal ta 10s og dette skal pågå til evig tid.

Starte en animasjon

Klikk på en av de røde propellbladene for å (re)starte animasjonen

_demo

Lage og starte en animasjon

Jeg tar utgangspunkt i eksempelet uten animasjonsnode. Planen er å plante en slik node når jeg skal starte animasjonen. Jeg kan gjøre dette på to måter: Jeg kan bruke innerHTML eller jeg kan konstruere en node med nødvendige attributter og egenskaper.

innerHTML

Dette kan vi gjøre svært enkelt med følgende javascript.

_demo3.js

Konstruere element

Alternativet er å konstruere en node. Dette er litt mer involvert enn det vi finner når vilage HTML-noder generelt. Den noden vi bruker må være av en spesiell (SVG) typefor at den skal ha de egenskapene vi trenger

Dette kan vi gjøre med følgende javascript.

_demo4.js

Skru animasjon av og på

Det er rimelig klart at vi kan slå av animasjoner etter de samme resonnementene som vi har brukt over, rett og slett ved å fjerne animasjonselementet. Det blir imidlertid litt mer krevnede dersom vi skal kunne restarte animasjonen på samme sted som vi stoppet den. Jeg har vridd til en løsning der jeg bruker Javascript til å huske status på rotasjonen. Det er mangeandre måter å angripe dette på og den løsningen du finner her er ikke neppe vanntett og muligens litt sårbar for endringer i SVG-spesifikasjonen.

_demo1

Javascriptet

_demo1.js
Animasjon >Rotasjon