Yksi kätevä tapa dokumentoida vaellus on tallentaa kuvat kuvateksteineen
Flash-kuvagalleriaksi. Myös vaellusreittikartat on tällöin hyvä laittaa kuvina
mukaan. Valmiita (ja hyviä) ratkaisuja Flash-gallerioiksi löytyy netistä hakemalla
helposti useitakin, mutta jos haluaa maksimaalisesti kontrolloida gallerian toiminallisuuden
ja ulkonäön niin silloin varmin ratkaisu on tehdä gallerian pohja itse.
Teinkin opettelumielessä oman Flash-kuvagallerian, joka lataa kuvatiedot xml-dokumentista.
Tutustutaan ensin kokeilemalla alla olevan Flash-gallerian ominaisuuksiin.
Kiitos Adoben aivan loistavien Flash Professional CS3 tai CS4 kehitysohjelmien tällaisten melko yksinkertaisten
Flash-komponenttien tekeminen on kokeneelle Flash/AS3 -koodarille muutaman tunnin työ. Toinen asia on sitten komponentin
ulkoasun ja käytettävyyden hiominen, joka veisikin jo paljon enemmän aikaa...
Omalta kohdaltani olen huomannut, että uudet asiat oppii usein nopeiten suoraan lähdekoodia tutkimalla ja kiinnittämällä huomionsa muutamiin
olleellisimpiin asioihin. Joten tehdään näin.
1) Komponentin nappien ja muiden toimintojen selaamisen selkiyttämiseksi komponenteille on syytä määritellä, jokin tabulaattorijärjestys:
2) Tehdäkseni kuvagalleriastani hieman yleiskäyttöisemmän luen kuvien osoitteet ja kuvatekstit ulkoisesta xml-tiedostosta
gallery_images.xml. Ulkoisen xml-konfigurointitiedoston
käyttäminen mahdollistaa saman käännetyn swf-tiedoston käyttämisen useille kuvagallerioille ilman, että flash-komponenttia
tarvitsee kääntää uudelleen.
Flash-komponenttini siis lukee alla olevan xml-tiedoston (vain kaksi ensimmäistä kuvaa tekstissä mukana)
gallery_images.xml
Ladataksemme kyseisen xml-tiedoston komponentin käynnistyksen yhteydessä täytyy komponenttimme Frame 1:een liittää alla oleva koodi:
Ja lisätä vastaavat tapahtuman käsittelijät lataustapahtumaa ja sen valmistumista tarkkailemaan:
3) Kuvaselaimen toiminnallisuuden tekemiseksi tarvitsemme lisäksi oman Loader-objektin kuvien lataamiseksi.
Yllä olevassa ParseImages onkin käytetty imageLoader-lataajaa, jonka saa lisämme komponenttiimme riveillä:
Koska kuvien lataaminen saattaa kuvien koosta riippuen kestää hetken lisäsin kuvanlataajaan myös lataamisen edistymistä (ProgressEvent.PROGRESS)
tarkkailevan tapahtumankäsittelijäfunktion progressFunction. Kuvan latauduttua (Event.COMPLETE) funktio LoadImage hoitaa kuvan lisäämisen
näytölle (ladataan objektiin imageSprite).
4) Kun nyt olemme toteuttaneet kuvannimet ja kuvatekstit xml-tiedostosta komponentin käynnistymisen yhteydessä lataavat
(ja tiedot Flash-muuttujiin tallentavat) funktiot sekä yksittäisen kuvan lataamisen mahdollistavan funktion. On seuraava
tehtävämme lisätä tämä kuvat lataava toiminto kuvanvaihdoista vastaaviin (kuvia selaaviin) nappeihin.
Käyn tässä yhteydessä vain seuraavaan kuvaan siirtävän napin toteuttamisen läpi. Muut napit voi toteuttaa vastaavasti.
Ensiksi kyseinen nappi tulee lisätä vaikkapa raahaamalla graafisen käyttöliittymän kautta apuikkunasta (Window->Components)
tai kääntämäällä teksti- tai kuvaobjekti (Modify->Convert to Symbol... -> Type: Button) nappiobjektiksi. Lisäksi napin voi lisätä
alustamalla nappi AS3-koodissa ja lisäämällä napin (addChild), joko suoraan stagelle tai sitten jonkin MovieClip-objekrin sisään.
Kun nappi on luotu niin sille pitää antaa instance name, johon AS3-koodissa sitten viittaamme (Valitse hiiren klikkauksella
nappiobjekti ja laita instance nameksi properties-välilehdellä (Window->properties) next_btn).
Kun napilla on annettu nimi next_btn, voidaan siihen yhdistää tapahtumankäsittelijäfunktio nextClickHandler.
Toteuttetaan kuvan vaihtava ja kuvanlataajaa imageLoader-käyttävä tapahtumankäsittelijä nextClickHandler:
Muut komponentin toiminnoista vastaavat napit lisätään samalla tavalla kuin seuraava-nappi.
5) Kun olemme saaneet kaikkien nappien toiminnot toteutettua, voimme liittää vielä nuolinäppäimiin kuvien
selaustoiminnon eli omat tapahtumankäsittelijät. Koska näppäinkomennot vastaavat tässä tapauksessa yksi-yhteen
nappienpainotoimintoja niin voimme kutsua näitä nappienpainotapahtumankäsittelijöitä lähettämällä
(keinotekoisesti) nappienpainotapahtumat käsittelyyn:
6) Flashissa on varsin helppoa toteuttaa animaatioefektejä MovieClipeiksi (tai yleisemmin DisplayObjekteiksi) tehdyille objekteille.
Animaatioefektejä pystytään tekemään joko suoraan aikajanalla graafisen käyttöliittymän kautta tai sitten kuten tein tässä tapauksessa: kirjoittamalla
efekti suoraan Action Script 3 -koodiin.
Flash tarjoaisi oman fl.transitions.TWeen-luokan joka onkin aika monipuolinen ratkaisu animaatioefektien
tekemiseen. Oma kokemukseni kuitenkin on, että tuon luokan käyttäminen on tehnyt bugeja animaatioiden toimintaan.
Siksi olenkin siirtynyt käyttämään yksinkertaisissa siirtymäefekteissä
TweenLite-luokkaa
, jonka käyttö on erittäin nopea oppia.
7) Koska koodin leikkaa/liimaaminen oheisista tekstikentistä erikseen omiin toteutuksiin on melko vaivailloista
(ja osa muuttujien määrittelyistäkin puuttuu noista kentistä). Laitan koko tuon komponentissani käyttämäni koodin vielä alle, yhteen
kerralla kopioitavaan tekstikenttään.
Itselläni tuo koodi on pääaikajanan framessa 1. Lisäksi tuo koodi vaatii toimiakseen tuon
jo mainitsemani TWeenLite-paketin lataamisen ja asentamisen. Ja tiedostoa
gallery_images.xml
on myös muokattava vastaamaan omien kuvatiedostojen sijaintia palvelimella (ja kyseisiä kuvatekstejä).
Jos sinulla lisäksi vielä on käytettävissäsi Flash Professional CS4, niin voi toki myös ladata koko lähdekoodin ja
grafiikat oheisesta fla-tiedostosta (CS4-formaattia):
xml_loader17.fla
Alla siis jo mainitsemani lähdekoodi vapaasti hyödynnettäväksi:
Takaisin Flash-ohjelmoinnin etusivulle