Flash Tutorijali

ActionScript, Flash i AIR tutorijali na hrvatskom jeziku

Loading & Preloading - Učitavanje i pred učitavanje eksternih fajlova u Flash

Posted by hamferus on January 11, 2008 under ActionScript 3.0, Osnove, Tutorijal

Vidim ima nestrpljivih, pa evo još jednog tutorijala. U ovom tutorijalu bum vam pokazal kako učitati eksterne fajlove u flash s actionscriptom. Ovo šta bum vam pokazal vrijedi za tipove fajlova .swf, .jpg, .png i .gif format. U actionscriptu 2.0 obično se koristio MovieClipLoder kojeg sad više nema u actionscriptu 3.0. U actionscriptu 3.0 koristimo Loader i URLRequest Class.

1. Otvorite novi Adobe Flash CS3 dokument(actionscript3.0)

2. Snimite taj fajl u folder po vašoj želji

3. Nađite sliku koja ima težinu(500kb - 1mb) i kopirajte ju u folder gdje ste snimili Flash dokument. Slika koju ja koristim je teška 2 magebajta

4. U Flashu zaključajte i preimenujte prvi layer u actions

5. Kliknite na prvi frame actions layera i otvorite actions panel(F9)

6. Počmite kodirat :)

Prvo tebamo definirati URLRequest variablu koja ima jedan argument, a on je adresa do fajla koji učitavamo. Vi promijenite "slika.jpg" u ime vaše slike.

1
var imageRequest:URLRequest = new URLRequest("slika.jpg");

Sad moramo definirati Loader varijablu. Ono kaj je učitano u loader dodaje se automatski na njegovu display listu.

2
var imageLoader:Loader = new Loader();

Još moramo pokrenuti učitavanje s load() metodom koja ima jedan argument a on je URLRequest.

3
imageLoader.load(imageRequest);

Na kraju moramo dodati Loader na display listu.

4
addChild(imageLoader);

Testirajte film(Ctrl+Enter) i trebali bi vidjeti sliku koju ste odabrali.

Kako vidite uopće nije teško učitati fajl u flash, ali mi tu ne stajemo jer ćemo sad napravit i pred učitavač(koje glupo ime al neznam drukčije) koji će nam pokazati postatak učitanog fajla.

Prvo bumo iskoristili tutorijal o TextField-u da pokažemo taj postotak loadanog fajla. Tekstualno polje bumo napravili izvan funkcije, a unutar ćemo mu dodjeliti jednadžbu za izračunavanje učitanog postotka.

5
6
7
8
var tekstUcitanog:TextField = new TextField();
tekstUcitanog.x = 100;
tekstUcitanog.y = 350;
addChild(tekstUcitanog);

Uz Loader Class za progres učitavanja bumo koristili LoaderInfo Class jer u njemu se nalazi informacija o loadanom fajlu(veličina fajla(kb), širina, visina,itd.) i s njim možemo možemo pratit progres učitavanja. LoaderInfo netreba bit dodan ko variabla.
Do podataka možemo doć na dva načina:
1. loaderInfo - osobine učitanog fajla
2. contentLoaderInfo - osobine učitavanja fajla
Mi bumo koristili contentLoaderInfo jer iz njega možemo saznat kad je učitavanje završilo i informacije o pregresu učitavanja.
Sad moramo dodati dva eventListenera, a to su ProgressEvent.PROGRESS koji je aktiviran za vrijeme samog učitavanja i Event.COMPLETE koji na daje informaciju da je fajl učitan.

9
10
imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadingProgress);
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComlpete);

Sad ćemo napisat funkciju koja se poziva tokom progresa učitavanja i iskoristit ćemo ukupni broj bajtova i broj učitanih fajlova iz contentLoaderInfo-a(target) da dobijemo učitani postotak fajla. Jednadžba koju ćemo koristit glasi:
broj učitanih bajtova podjeljen s ukupnim brojem bajtova pomnožen s 100 da dobijemo postotak

ucitaniBajtovi/totalniBajtovi * 100

Ali pošto taj broj ima decimale, a mi ih netrebamo zaokružit ćemo taj broj na cijeli broj s Math.round() funkcijom. Unutar funkcije definitat ćemo tri variable:
1. ucitaniBajtovi - broj
2. totalniBajtov - broj
3. postotakUcitanog - broj koji ćemo dobit izračunavanjem jednadžbe za dobivanje postotka učitanog
Pa ćemo postotakUcitanog dodati tekstualnom polju koje smo napravili maloprije i dodat ću simbol
postotka(%) tako da u tekstualnom polju imamo: broj + %

11
12
13
14
15
16
17
function loadingProgress(e:ProgressEvent):void
{
	var ucitaniBajtovi:Number = e.target.bytesLoaded;
	var totalniBajtovi:Number = e.target.bytesTotal;
	var postotakUcitanog:Number = Math.round(ucitaniBajtovi/totalniBajtovi * 100);
	tekstUcitanog.text = postotakUcitanog + "%";
}

Konačno imamo funkciju koja će nam reć da je učitavanje gotovo. Pošto je moja slika od 10 megapiksela ja ću ju smanjit na 10% njezine veličine nakon šta se učita.

18
19
20
21
22
function loadComlpete(e:Event):void
{
	imageLoader.scaleX = 0.1;
	imageLoader.scaleY = 0.1;
}

Sad testirajte svoj film i u prozoru koji vam se otvorio(filmić) Kliknite VIEW/SIMULATE DOWNLOAD da bi vidjeli kako učitani postatak raste od 0 do 100, tu imate još jednu opciju a ona je DOWNLOAD SETTINGS gdje se možete igrati s brzinom kojiom će Flash loadati fajl. Ako ovo ne napravite nebute vidjeli proces učitavanja.

Primjer:

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

  1. tac Said,

    Kako se ovo može iskoristiti da se napravi slideshow u flashu?

  2. hamferus Said,

    Slidshow tutorijal je u planu, a ovaj tutorijal je dio njega. Sutra(zapravo danas) bum napravil XML tutorijal koji će sadržavat adrese do slika i onda ću udružti loading i xml tutorijal da se dobije jednostavni slideshow.

Add A Comment