5.2 Timer, timeout och intervall
Med en timer kan man aktivera en funktion efter en bestämd tid. Detta kan antingen ske en gång eller om och om igen i ett intervall. Exemplet består av tre delar:
- Demo av hur
setTimeout()
ochsetInterval(
) fungerar. - Animering med hjälp av
setInterval(
), för att flytta en box åt vänster och höger. - Utökning av ett program, där vi tidgare sett hur man kan styra en bil. Nu animeras bilen, så att den också åker i vald riktning.
22 min.
Sammanfattning
- Med
id = setTimeout(f, t)
startar man en timer, som anropar funktionenf
, då tident
går ut. Timern kan avbrytas innan tiden t gått ut medclearTimeout(id)
. - Med
id = setInterval(f, t)
startar man en timer, som fortsättar att anropa funktionenf
om och om igen i ett tidsintervall på tident
. Detta fortsätter tills intervallet bryts medclearInterval(id)
. - En animering kan skapas genom att anropa en funktion i ett tidsintervall. I funktionen förändrar man elementets
left
och/ellertop
och förflyttar därmed elementet i x- och y-led.
Egna övningar
Här följer ett förslag på några egna övningar. Öppna filen test.html och test.js och utför följande:
- Automatisk bildvisning:
- Skriv en funktion för automatisk bläddring i bildspelet. Då man kommer till sista bilden, ska bildspelet börja om på den första bilden igen. Funktionen ska alltså räkna upp
imgIx
med 1, men då man kommer förbi sista bildens index, skaimgIx
sättas till 1 igen. Sedan anropasshowImg
, för att visa bilden. - Anropa funktionen i ett intervall med lämplig tid (t.ex. 1 sekund). Lägg in intervallanropet i
init
-funktionen.
- Skriv en funktion för automatisk bläddring i bildspelet. Då man kommer till sista bilden, ska bildspelet börja om på den första bilden igen. Funktionen ska alltså räkna upp
- Fördröjd automatisk visning:
- Lägg till kod för en timeout på t.ex. 3 sekunder. Då tiden gått ut, ska intervallet för den automatiska bildvisningen startas.
- Varje gång användaren klickar på en knapp för att själv bläddra, dvs då programmet kommer in i funktionen
prevImg
ellernextImg
, ska både timern för timeout och intervallet avbrytas. En ny timeout startas och om användaren då inte själv bläddrat, ska den automatiska bildvisningen startas igen.