Flash Tutorijali

ActionScript, Flash i AIR tutorijali na hrvatskom jeziku

XML Image Slideshow

Posted by hamferus on January 17, 2008 under ActionScript 3.0, Napredno, Tutorijal, XML

U današnjem actionscript tutorijalu napraviti ćemo slideshow koji će učitati eksterne slike, a adresa do slika bit će pohranjena u xml-u. Ja ću koristit četiri slike.

1. Napravite folder u kojem ćemo snimit xml, flash dokument i u kojem će se nalazit naše slike

2. Kreirajte xml dokument u bilo kojem text editoru(notepad, notepad ++ ,itd.)

Otvorite svoj text editor i kopirajte ovaj kod i snimite fajl pod imenom "xmlSLideshow.xml":

1
2
3
4
5
6
<slideshow>
<slika adresa="image001.jpg">
<slika adresa="image002.jpg">
<slika adresa="image003.jpg">
<slika adresa="image004.jpg">
</slika></slika></slika></slika></slideshow>

slideshow je rootNode u xml-u
slika je childNode u xml-u
adresa je atribut unutar slika childNode-a

3. Nađite 4 slike i stavite ih u isti folder s xml-om, promijenite imena slika u adresa atributu da budu isti kao i imena vaših slika.
4. Otvorite Adobe Flash CS3 i kreirajte novi Flash dokument(actionscript3.0) i snimite ga u folder s xml-om i slikama.
5. Zaključajte prvi layer i preimenujte ga u actions
6. Kliknite na prvi frame actions layera i otvorite actions panel(F9)
7. Krenite kodirat :)

Prvo moramo deklarirati dvije variable currentImage i urlArray. CurrentImage je broj koji ćemo povećavat kad se pokrene tajmer i on će određivat koja slika se učitava, a početna vrijednost mu je 0. UrlArray je array koji će bit popunjen s adresama do slika unutar for loopa kad se xml učita.

1
2
var currentImage:Number = 0;
var urlArray:Array = new Array();

Sad moramo definirati XML, URLRequest(adresa do xml fajla) i URLLoader variablu koja ima jedan agument(URLRequest,tj. adresu do xml fjla). Kod server-side skripti i xml-a koristi se URLLoader, a ne Loader kao kod eksternih fajlova. Nakon što smo definirali te tri variable xmlLoaderu moramo dodati eventListener koji osluškuje kad je naš xml učitan. Ako imate veliki xml fajl proces učitavanja je isti kao kod externih fajlova.

3
4
5
6
var myXML:XML = new XML();
var xmlRequest:URLRequest = new URLRequest("xmlSlideshow.xml");
var xmlLoader:URLLoader = new URLLoader(xmlRequest);
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

Unutar xmlLoaded funkcije prvo moramo popuniti xml variablu koju smo definirali izvan funkcije s podacima koje smo dobili nakon što je xml učitan. Nakon toga pokrećemo for loop. U for loopu provjeravamo koliko ima childNode-ova s imenom "slika" i ovisno o tome povećavamo broj "i", a svaki put kad povećamo broj "i" popunimo urlArray s podatkom iz "adresa" atributa u "slika" childNode-u. Nakon što smo popunili urlArray i završili s for loop-om pokrećemo funkciju initSlideshow() koja pokreće naš slideshow.

function xmlLoaded(e:Event):void
{
myXML = XML(e.target.data);
for(var i:uint = 0; i<myXML.slika.length();i++)
{
urlArray.push(myXML.slika[i].@adresa);
}
initSlideshow();
}
Prije nego napišemo initSlideshow() funkciju moramo definirati Loader i URLRequest pomoću kojih ćemo učitati slike, pozicionirati Loader na sredinu animacije i dodati Loader na display listu. Za razliku od tutorijala u kojem sam vam pokazao kako učitati sliku ovdje ćemo ostavit URLRequest prazan jer ćemo adresu definirati unutar initSlideshow() funkcije.

18
19
20
21
22
var imageLoader:Loader = new Loader();
var imageRequest:URLRequest = new URLRequest();
imageLoader.x = stage.stageWidth/2 - 200;
imageLoader.y = stage.stageHeight/2 - 150;
addChild(imageLoader);

Unutar initSlidshow() funkcije prvo moramo URLRequest-u dodati adresu do prve slike. Adresa se nalazi u urlArrayu na prvoj poziciji. U array-ima prva pozicija je nulta(0) pozicija i zato smo currentImage broj postavili na nula kad smo ga definirali na početku skripte. Nakon toga učitamo sliku pomoći Loader-ove load() funkcije koja ima jedan argument(URLRequest). Slike ćemo mjenjat pomoću tajmera i svaki put kad se tajmer pokrene(svakih 5 sekundi) pozvat ćemo changeImage() funkciju.

23
24
25
26
27
28
29
30
function initSlideshow():void
{
 imageRequest = new URLRequest(urlArray[currentImage]);
 imageLoader.load(imageRequest);
 var mT:Timer = new Timer(5000);
 mT.start();
 mT.addEventListener(TimerEvent.TIMER, changeImage);
}

Svaki put kad pozovemo changeImage() funkciju(svakih 5 sekundi) povećavamo currentImage broj. Pomoću if statmenta provjerit ćemo dal je currentImage broj veći od ukupnog broja childNode-a. Pošto imamo 4 childNoda ali prvi je nula(0) onda ih ima 0,1,2 i 3 tako da ako currentImage isti kao broj 4 mi moramo resetirat currentImage broj na 0. Tako smo dobili slideshow koji ide u krug. Da bi se slika promijenila moramo promijenit URLRequest argument(adresu) i pokrenuti load() funkciju s novom adresom.

31
32
33
34
35
36
37
38
39
40
function changeImage(e:TimerEvent):void
{
 currentImage++;
 if(currentImage == 4)
 {
 	currentImage = 0;
 }
 imageRequest = new URLRequest(urlArray[currentImage]);
 imageLoader.load(imageRequest);
}

Primjer:

(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

Source Fajlovi - .fla, .xml i slike

Imam nekih problema s pokazivanjem koda u dijelu gdje se nalazi for loop, pa vas molim da downloadate source fajlove da vidite kako bi trebao izgledat kod u tom djelu.
Pozdrav do sljedećeg tutorijala.

  1. sanja Said,

    zanima me kako da napravim da u flash prezentaciji slidovi idu sami (ne vođenjem tipkovnicom). znam da to ima u MS power point pa pretpostavljam da ima i flash ali ne znam se koristiti time. trebalo bi mi hitno.

    Hvala

  2. hamferus Said,

    Malo kasnim, ali tu sam. U ovom tutorijalu ti je objašnjeno kako da napraviš da slideshow ide sam, al pošto je prošlo dosta vremena mislim da si to i shvatila.

  3. Marjan Said,

    Trebao bih izraditi virtualni cd pa bih koristio neke flash animacije, konkretno page flip i takvi primjeri se nalaze na dosta stranica na internetu
    http://www.centarnekretnina.net/magazin/7/
    http://www.ikea.com/ms/de_AT/virtual…ue_splash.html
    Trebao bih izraditi takvo što stime što bih htio da to bude exe fajl koji bi se pokretao adobe flash player. Nemam puno iskustva s tim pa bih pitao nekog ko bi mi pomogao oko ovog. Imam flash cs3 instaliran ali neznam kako baš to šljaka. Našao sam neke skripte stim efektom ali neznam kako da ih koristim. Slike koje bi išle bile bi u PDF-u. Unaprijed hvala!

  4. hamferus Said,

    Exe file možeš napravit u Flash-u. Prvo odi pod PUBLISH SETTINGS, pa u formats tabu označi WINDOWS PROJECTOR i onda odeš pod FILE/PUBLISH PREVIEW i klikneš PROJECTOR i u folderu di ti je .fla file nastat će ti .exe file.

Add A Comment