Eelmine ülesanne käsitles pildigaleriid navigeerimisnuppudega, nüüd aga loome pildigalerii, mille pildid vahetuksid ajastusega. Samal moel töötavad ka paljud Flashis loodud ribareklaamid – bannerid, kus pildid ja tekstid teatud aja järel vahetuvad.
Õpime:
Näidetest failid banner.fla, banner.swf
Taaskord vajame esmalt objektikogusesse imporditud pilte ning nende kihtidele lohistamist. Soovi korral võib teistele kihtidele luua tekstikastid või kasutada eelmises ülesandes selgitatud dünaamise tekstikasti ja massiivi näidet.
Loome uue kihi ActionScripti tarvis.
Selleks loodud tühjale kihile kirjutame kaks ActionScripti, esimese esimesele kaadrile, mõjualaga eelviimase kaadrini ning teise viimasele kaadrile.
Esimene kaader:
function edasi():Void { nextFrame(); } var intervalID:Number = setInterval(edasi, 5000); stop();
Funktsiooni edasi() ülesandeks on väljakutsumisel liikuda järgmisele kaadrile.
setInterval() funktsiooni kasutatakse funktsiooni või meetodi välja kutsumiseks teatud perioodi järel, mil SWF-fail mängib, parameetriteks on funktsiooni/objekti nimi ning numbriline intervall. Arv 5000 märgib millisekundeid, seega on intervalli pausiks 5 sekundit. Muutujat intervalID kasutatakse setInterval() poolt tagastatava väärtuse (intervalli numbri) hoidmiseks.
Viimane kaader:
function edasi():Void { clearInterval(intervalID); gotoAndPlay(1); } clearInterval(intervalID); var intervalID:Number = setInterval(edasi, 5000); stop();
Nagu näeme, omab funktsioon edasi() järgmises kehtivuspiirkonnas, milleks on viimane kaader, hoopis teistsugust ülesannet, nimelt lõpetab see intervalli ning suunab tagasi esimesele kaadrile. Kehtivuspiirkondi nimetatakse ka skoopideks.
clearInterval(intervalID) , nagu nimigi ütleb, lõpetab muutujaga intervalID ette antud intervalli tegevuse.
Et enne uue intervalli loomist eelmist lõpetada, tuleks clearInterval() kindlasti välja kutsuda enne setInterval() funktsiooni. See kindlustab, et intervalID muutuja, mis on ainus viide hetkel käimasolevale intervallile, ei kirjutata üle ega hävitata muul moel.
Topelt kood (kustutame intervalli, seejärel loome uue, et see siis uuesti kustutada funktsioonis edasi()), on vajalik selleks, et ka viimasel kaadril peatutaks, vastasel korral liigutakse sellest lihtsalt üle, kui vaid edasi() funktsioon välja kutsuda.