Professional Documents
Culture Documents
Flash I ActionScript
Flash I ActionScript
Dejan Katai"
Flash i ActionScript
SADRAJ
Predgovor Uvod 3 4
1 Flash
1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 3.3 3.4 3.5 3.6 4.1 4.2 4.3 4.4 4.5 5.1 5.2 5.3 5.4
2 ActionScript
16
25
Elementi pasijansa ........................................... 25 Interakcija ......................................................... 26 Kreiranje karata................................................ 27 Deljenje karata ................................................. 29 Prebacivanje karata ......................................... 30 Undo i Redo mehanizam.................................. 31
33
41
49 50 51
D De ej ja an n K Ka at ta a i i! !
PREDGOVOR
Pojava servisa World Wide Web proteklih godina uvela je revoluciju u kori!enju Interneta i kompjutera uopte. Od tih momenata kompjuter sve vie prestaje da bude alatka koju koriste visokostru"ni profesionalci i postaje jo jedan zabavan i koristan aparat u doma!instvu. Masovnim kori!enjem pove!ali su se i zahtevi za mogu!nostima koje servis treba da obezbedi. Najve!i nedostatak Interneta, protok podataka, uslovio je, s jedne strane, velika ulaganja u razvoj mrene infrastrukture i pove!anje propusnog kapaciteta same mree i, s druge strane, razvoj i primenu raznih tehnika komprimovanja podataka i steaming formata, kako bi postoje!i resursi mogli da obezbede to ve!u iskoristivost, pre svega, multimedijalnih mogu!nosti Interneta. Flash, proizvod kompanije Macromedia, je jedna tehnologija posebno prilago#ena sukobljenim zahtevima Interneta. Grafi"ki je zasnovan na vektorskom opisu objekata sa animacijom vo#enom opisom promena na samim objektima, uz mogu!nost steaminga podataka. U ovom trenutku predstavlja najefikasnije reenje na webu iz domena animacije. Mogu!nost dizajniranja korisni"kog interfejsa i programiranja njegovih elemenata za interakciju sa korisnikom "ini ga tako#e i liderom interaktivnosti na mrei. Cilj ovog rada jeste upoznavanje sa svetom koji Flash moe da predstavi, sa akcentom na mogu!nosti programiranja u ActionScriptu, Flashovom internom skript jeziku. Uvod "itaoca upoznaje sa problematikom sadraja na webu i predstavlja na koji na"in Flash odgovara na postavljene izazove. Prvo poglavlje predstavlja program Flash i njegovo radno okruenje, na"in rada i mogu!nosti. U drugom poglavlju nalazi se pregled programskog jezika ActionScript, dok se u narednim poglavljima kroz primere blie osvetljavaju neki aspekti ActionScripta i Flasha. Svi primeri imaju malu veli"inu izlaznog fajla, uz potpunu funkcionalnost programa. Tre!e poglavlje predstavlja Pasijans, varijaciju na dobro poznatu igru Solitaire sa Windows platformi. U ovom primeru posebno je istaknuta manipulacija grafi"kim elementima u Flashu, kao i detalji pri radu s objektima u jeziku. U "etvrtom poglavlju, Slagalica, testiraju se perfomanse Flasha i ActionScripta za pronalaenje optimalnog reenja zadatog problema i daje jednan na"in animacije na#enog reenja. Tako#e se ispituje brzina izra"unavanja u razli"itim Flash Playerima. Peto poglavlje predstavlja mogu!nost komunikacije Flasha sa spoljnim okruenjem kroz mrenu igru za dva igra"a Web memorija. Zaklju"ak podse!a na glavne osobine Flasha i mogu!nosti primene. Zahvaljujem se porodici, profesorima i prijateljima na podrci, znanju i pomo!i tokom studija i izrade ovog rada.
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
UVOD
Protok podataka jeste razlog zato medijalne mogu!nosti prezentacije na Internetu nisu na nivou one koja se skladiti na CD-u. Dok CD moe slobodno da sadri kompleksne programe i nekomprimovane video i audio zapise, slike i velike koli"ine tekstualnih podataka, na web prezentaciji (dalje: prezentaciji), uz uvaavanje ograni"enog protoka, je dozvoljeno mnogo manje toliko da posetilac moe da primi informaciju koja mu se nudi u nekom, dovoljno kratkom, roku. Sa druge strane, raznovrsnost sadraja koji se moe na!i na globalnoj mrei postavlja zahtev autoru prezentacije da pruena informacija omogu!i korisniku da prati tok informacija koji mu se nudi putem prezentacije. Korisnik tako#e ima svoje zahteve: eli to vie to bolje u roku to bre to bolje; a ukoliko mu se po tom kriterijumu ne iza#e u susret, jednostavno !e krenuti da zadovoljava svoje potrebe na nekoj drugoj lokaciji, na nekoj drugoj prezentaciji.
one aspekte jezika, koje sama kompanija smatra za bitne ili koje jeste uspela da realizuje, istovremeno nude!i neka druga reenja "ime se sti"e prednost u odnosu na konkurentske kompanije i njihove programe. Ovakva stvarnost autoru prezentacije stvara samo probleme. Autor mora poznavati ta"no ta koja verzija kog programa moe da prui, ukoliko i dalje eli da obezbedi posetiocu svoje prezentacije prezentovanje sadraja na eljeni na"in. Iako savremeni programi za kreiranje web prezentacija poseduju odre#enju bazu znanja o ovoj problematici, krajnji rezultat je: ili pove!anje koli"ine podataka za opis sadraja (zbog raznih ispitivanja o browseru klijenta i kreiranja razli"itih reenja za isti prikaz), ili optimizacija sadraja za pojedine browsere ("ime se ote!uju posetioci koji koriste ostale), ili koritenje najjednostavnijih elemenata jezika, podranih od svih browsera (gubi se atraktivnost naprednih elemenata). Dobra ilustracija autorske muke jeste mogu!nost koritenja klijentskih skript jezika u okviru HTML stranica. Ovi jezici omogu!avaju dodavanje razli"itih efektnih reenja za proirenje funkcionalnosti stranice kao, na primer, poboljanje navigacionog sistema. I opet novi problemi: jezik VBScript prepozna!e samo Internet Explorer, a mogu!nosti JavaScripta (u Internet Exploreru JScript) zavise od modela dokumenta koji poznaje posmatrana verzija posmatranog browsera. Zna"i, skriptuje se u JavaScriptu a univerzalnost se obezbe#uje slede!om konstrukcijom (pseudokod):
ako je Netscape ako je verzija manja od 4 // radi ovo ina"e ako je verzija 4.x // ovo za 4.x ina"e // verzija je 6 // i tada radi ovo ina"e // nije Netscape, zna"i IE ako je verzija....
Rezultat je razli"ita realizacija istih zadataka u razli"itim uslovnim granama. Umanjuje se preglednost koda, pove!ava se veli"ina fajla, produava se vreme u"itavanja stranice, pove!ava se koli"ina podataka koja klijentu nije od koristi...
Bitmapirana grafika
Grafi"ki fajlovi fotografije, crtei, navigacione slike i drugo, na HTML stranici najire su prisutni u dva formata - .jpg i .gif. To nije slu"ajno, jer najbolje odgovaraju zahtevu da prue to vie informacija u to manjem fajlu. Jer, stranica je u"itana tek onda kada su u"itani svi njeni elementi. Zna"i da ukupna koli"ina podataka, koja treba da stigne do klijenta da bi browser mogao ispravno da prikae stranicu, nije manja od zbira veli"ina fajlova svih elemenata stranice. Tako#e, svaki element putuje po posebnom zahtevu, to uslovljava odre#ena kanjenja u komunikaciji klijenta i servera i produava vreme u"itavanja. Keiranje elemenata koji se ponavljaju na razli"itim stranicama jeste od pomo!i, ali ne i pri prvom pristupu prezentaciji (prva stranica jeste najbitnija u odluci posetioca ho!e li ostati ili odustati od posete).
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
Animacija
Klasi"ni video formati neprimenljivi su za primenu na Internetu zbog veli"ine zapisa fajlova. Iako je sve rairenija upotreba tipova zapisa koji koriste velike stepene kompresije podataka, ona ne obezbe#uje prikaz u realnom vremenu preko globalne mree. Pojava streaming formata zapisa dozvoljava prikaz pre skidanja kompletnog fajla, mada je realno primenljiva samo pri koritenju zapisa manjih dimenzija (u pikselima) i na delovima mree koji mogu da obezbede potreban protok za prikaz. Interakcija na HTML strani ograni"ena je na elemente formulara i klijentsko skriptovanje sa ograni"enom grafi"kom kontrolom nad elementima stranice, a konkretna promena sadraja stranice jeste odlazak na drugu stranicu (novi zahtev serveru)
ODGOVOR: FLASH
Flash je proizvod kompanije Macromedia "iji se fajlovi (filmovi) sa ekstenzijom .swf prikazuju u web-browseru putem plug-in dodatka. Flash plug-in Player je razvijen i razvija se za sve vode!e platforme (procesor + operativni sistem + browser). Format .swf je u formi open-source to omogu!ava njegovo bre i rairenije prisustvo u svetskim razmerama. Na naslovnoj stranici prezentacije firme Macromedia najsveiji podatak je da 98.3% korisnika Interneta poseduje ovaj dodatak. Ovo prakti"no govori da Flash jeste postao standard u svetu globalne mree i, uz "injenicu da ve!ina novijih browsera pri samoj instalaciji postavljaju ovaj plug-in u svoje okruenje, da onaj ostatak uglavnom predstavljaju korisnisnici zastarelih verzija programa koji ionako ne mogu da udovolje zahtevima savremenih prezentacija.
Nezavisnost od platforme
Zna"i, svaki posetilac koji poseduje Flash Player ima mogu!nost da pogleda .swf film jer ne zavisi od platforme sa koje pristupa fajlu. Dalje, postoji mogu!nost da se svi fontovi potrebni za prezentaciju u Flashu uklju"e u dokument, tako da izgled ne zavisi ni od fontova instaliranih na ra"unaru. Svi grafi"ki elementi u Flashu, pa i fontovi, su vektorski opisani (ako se izuzme mogu!nost uvoza bitmapiranih slika) tako da je mogu!e skaliranje celog filma prema prozoru browsera odnosno nema zavisnosti od ekranske rezolucije. Kako Flash ne zavisi od platforme, konstrukcije ispitivanja okruenja zbog prilago#enja prikaza nisu potrebne svaka realizacija prikaza radi se ta"no jednom.
Vektorska grafika
Opis vektorske grafike je jednostavan i nema gubitka podataka jer nema ni kompresije. Film je u jednom fajlu tako da server obra#uje samo jedan zahtev pri slanju filma klijentu. Ukupna veli"ina .swf fajla je manja od analogno tome ra#ene HTML stranice. I slede!e: Flash film moe da po"ne da se prikazuje odmah po u"itavanju prvih kadrova filma, pre nego to se kompletno u"ita kod klijenta.
6 D De ej ja an n K Ka at ta a i i! !
Animacija i interakcija
Flash fajl naziva se film zbog mogu!nosti animacije, osnovne prednosti na Internetu u odnosu na sva druga ponu#ena reenja. Primer: animacija kvadrata koji se rotira po nekoj putanji i pritom menja svoju veli"inu, pamti se kao objekat opisan pozicijom nekoliko ta"aka, po"etnom i krajnjom pozicijom objekta, faktorom slaliranja objekta i parametrom broja okretaja tokom animacije. Ceo taj opis moe biti smeten u desetak bajtova, bez obzira na veli"inu kvadrata i broj slika koje u"estvuju u celoj animaciji. Realizacija iste ove animacije u bitmapiranom svetu je niz potrebnog broja slika (duina animacije), od kojih svaka slika kompletno opisuje sadraj boje svojih ta"aka (broj ta"aka zavisi od dimenzija irina puta visina) ili promenu sadraja u relaciji na prethodnu sliku. Zna"i, dimenzije animacije i njena duina zna"ajno uti"u na veli"inu zapisa animacije. Jedan od elemenata Flasha su objekati koji mogu da reaguju na odre#ene doga#aje, me#u kojima i su korisnikove akcije unosa putem tastature ili akcije mia, koji dalje mogu da uslovljavaju dalje ponaanje u filmu. Kompletan sadraj filma u Flashu moe se menjati, kao odgovor na korisni"ke akcije, bez potrebe za dovla"enjem sadraja sa servera, jer se celokupni sadraj moe se nalaziti u okviru samog filma. U okviru Flasha se za upravljanje kontrolom filma koristi jezik ActionScript, kome je u okviru ovog rada posve!ena posebna panja.
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
1 FLASH
Flash Player je program za prikazivanje .swf filmova. Postoji u obliku plug-in dodatka za web-browsere, a tako#e kao i samostalni program za Windows i MacIntosh platforme. Program za kreiranje filmova zove se Flash i tako#e je realizovan za ove dve platforme. Najnovija verzija programa nosi naziv Flash MX (MX predstavlja obavetenje o $0 godina rada kompanije Macromedia) i to esta verzija ovog programa.
1.2.1 Pozornica
Centralni deo radnog okruenja dodeljen je pozornici (stage). Ona odslikava svet dvodimenzionalnog koordinatnog sistema sa po"etkom u gornjem levom uglu, "ije se dimenzije (u pikselima) odre#uju kao globalne za ceo film. Na slici dole, pozornica je centralni beli pravougaonik.
Sam film moe da se organizuje po scenama. Tako je pri kreiranju praznog dokumenta kreirana i aktivna prva scena (Scene $). Na slici se ovo vidi pri gornjem levom uglu, ispod menija (slika filmske klape i natpis Scene $).
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
Pojam frejma poznat je iz filmske terminologije, predstavlja stanje u nekom posmatranom trenutku. Vremenska komponenta je diskretizovana na frekvenciju frejmova po sekundi, to se tako#e globalno odre#uje na nivou filma. Klju"ni frejm je frejm sa nekim definisanim stanjem elemenata odre#enog lejera. Izme#u dva klju"na frejma u lejeru moe se zadati animacija elemenata lejera, odnosno distribucija promena po frejmovima izme#u uo"enih klju"nih frejmova. Ovaj pojam koristi se pri izradi animiranih filmova, gde glavni crta"i crtaju klju"ne slike (frejmove), a animatori dovravaju posao crtanjem me#uslika.
Za ilustraciju ove pri"e primer je slika iznad. Postoji pet lejera, nazvani back, obj1, obj2, code i labels. Lejer back je najdonji, iznad njega je obj1, i tako redom do lejera labels, koji je najgornji. Selektovan je lejer obj1. Lejeri labels i code nisu vidljivi (oznaka x ispod oka) i zaklju"ani su (katanac), kao i lejer back. Kako se lejer obj2 nalazi iznad obj1, "iji elementi trenutno dizajniraju, to se kod lejera obj2 prikazuju samo obrisi oblika elemenata (kvadrati! isklju"uje vidljivost popune) kako bi elementi lejera obj1 mogli biti vidljivi i pored eventualnih preklapanja. Film zauzima $3 frejmova, a u donjem redu o"itava se da je aktivan sedmi frejm, da se film podeen za prikazivanje $2 frejmova u sekundi (fps) i da trenutna pozicija predstavlja 0.5 sekundi od po"etka filma. Na samom sedmom frejmu prisutna je vertikalna crta koja ozna"ava selektovani frejm. U preseku selektovanog lejera i frejma je selektovan klju"ni frejm (popunjen krui!) lejera obj1. Izme#u nekih klju"nih frejmova nalazi se strelica, koja predstavlja animaciju elemenata lejera izme#u uo"enih frejmova (program u frejmovima strelice izra"unava promenu elemenata lejera u odnosu na klju"ne frejmove). U lejeru code vide se klju"ni frejmovi sa oznakom a, to ukazuje da ti frejmovi sadre neke akcije ActionScripta. U lejeru labels dva klju"na frejma imaju zastavice i tekst koji predstavlja labelu (oznaku) frejma, koja olakava prepoznavanje delova filma i "ije ime se moe koristiti pri zadavanju komandi ActionScripta za kontrolu toka filma (na primer, moe se narediti skok na poziciju imenovanog frejma).
Poput drugih programa za rad sa vektorskom grafikom i u Flashu su standardne alatke za crtanje: selektor, linija, pravougaonik, elipsa, slobodno crtanje, gumica... Postoje dva selektora za boje: za boju linije (konture) i za boju popune konture. Za popunu se, pored osnovnih boja, mogu odabrati i radijalno ili linearno nijansirani prelazi boja. Boja pozadine odre#uje se globalno na nivou filma.
Grafi"ki simbol moe biti animiran, ali se njegova vremenska osa vezuje za scenu (ili filmski klip, ako se u njemu instancira), tako da sve promene toka (po frejmovima) roditeljskog elementa uti"u i na instancu grafi"kog simbola. Tako, na primer, ako se u
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t 11
nekom trenutku zaustavi animacija na sceni, zaustavlja se i animacija svih instanci simbola tipa grafika. Druga"ije ponaanje u odnosu na ovo realizuju simboli tipa filmski klip. Gledano na istom primeru, zaustavljanje animacije na sceni ne uti"e na ponaanje instanci filmskih klipova postavljenih na scenu ve! naprotiv, one nastavljaju tok svoje vremenske ose. Pored ovoga, svakoj instanci simbola filmskog klipa moe se dodeliti jedinstveno ime instance, kojim se potom referencira instanca u akcijama ActionScripta.
1.2.5 Paneli
Za pregled, organizaciju i modifikaciju elemenata Flash filma koriste se paneli sa komandama i opcijama vezanim za posmatrani tip elementa. Mogu se modifikovati simboli, instance, boje, tekst, frejmovi i drugi elementi filma. Slika levo predstavlja jedan panel. Paneli se mogu organizovati u grupe, tako da se na ovoj slici u stvari nalaze tri panela, od kojih je aktivan (jezi"ak gore) panel Info. Panel svoj prikaz vezuje za selektovani element scene, frejm i sli"no, i nudi opcije koje se mogu vriti nad selekcijom. *** Pored pomenutih elemenata okruenja, postoje meniji, toolbari (standardni i kontroler toka filma), kao i dodatni alati za testiranje filma, dibager i izlazni prozor.
1.3.2 Crtanje
Grafi"ki elemenati mogu biti kreirani kori!enjem alata za crtanje.
12 D De ej ja an n K Ka at ta a i i! !
Crtanje se odvija u okviru selektovanog klju"nog frejma selektovanog lejera, u okviru elementa filma koji se edituje. Element filma moe biti scena ili simbol. Odabirom alatke (linija, elipsa, pravouganik, slobodno crtanje...) odre#uje se ta !e se crtati, selekcijom boja odre#uju se boje linije i popune elementa koji se crta, a u panelima mogu!e je odrediti tip i debljinu linije, na"in popune ("ista boja, radijalni ili linearni gradijent, bitmapa) i procenat transparencije boja. Sve osobine mogu!e je i naknadno menjati selekcijom eljenih kontura ili popuna i promenom vrednosti osobine u odre#enom panelu ili selektoru boje. Primer: na slici levo je elipsa sa podebljanom isprekidanom linijom i radijalnom popunom Za pomo! pri crtanju koriste se reetka (grid), vo#ice (guidelines), koje se vuku sa lenjira (ruler), i ve! postoje!i objekti na sceni (ili u definiciji simbola). Postoji mogu!nost vezivanja (snap) klju"nih ta"aka elementa koji se crta za neki od pomenutih elemenata, a tako#e se odre#uje i stepen vezivanja (koliko pokaziva" mia moe biti udaljen od elementa da bi dolo do vezivanja). Parametri reetke, horizontalni i vertikalni razmak izme#u linija reetke, menjaju se po potrebi. Pozicioniranje elementa mogu!e izvodi se poravnavanjem u odnosu na druge elemente ili u odnosu na pozornicu, kao i distribucija elemenata, levo, desno ili centrirano. Pozicija elementa moe se i numeri"ki odrediti, kao i dimenzije, a mogu!e je izvoditi i relativnu transformaciju dimenzija (procentualno), rotacije i zakoenja (skew).
1.3.4 Animacija
Pri dizajniranju filma mogu se koristi dve vrste animacije: animacija oblika (shape tween) i instanci simbola ili grupisanih objekata (motion tween). Zajedno za obe vrste animacije je da se definie izme#u dva klju"na frejma (po"etnog i krajnjeg frejma animacije) istog lejera i definisanje dinamike animacije (easing pozitivne vrednosti daju bru promenu u na po"etku animacije, negativne obratno).
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
13
Animacija oblika predstavlja jednostavno pretapanje oblika izme#u uo"enih klju"nih frejmova. Ne moe se primenjivati na instance simbola i grupisane objekte, ve! samo na oblike. Primer bi bio transformacija pravougaonika u elipsu: u prvom klju"nom frejmu crta se pravougaonik, u drugom elipsa, i na kraju se kod prvog klju"nog frejma zadaje animacija (tweening) postavljanjem na shape. O frejmovima izme#u stara se Flash i izra"unava me#uoblike. Motion tween, sli"no, zahteva samo jednu (istu) instancu simbola ili grupu simbola prisutnu na oba klju"na frejma lejera. Sve promene vrednosti osobina elementa klju"nih frejmovima se pri zadavanju animacije (tweening na motion) distribuiraju po me#ufrejmovima. Pri zadavanju moe se odrediti i dodatna rotacija elementa (smer i broj okretaja) tokom animacije. Naprednija varijanta ove animacije postie se tako to se lejeru pridrui vode!i lejer (motion guide). Na vode!om lejeru iscrtava se samo putanja elementa. Element se u klju"nim frejmovima vezuje za po"etnu i krajnju ta"ku putanje. Pri ovakvom zadavanju animacije odre#uje se da li se element tokom animacije orijentie i po putanji, ili ne. Sadraj vode!eg lejera se ne prikazuje pri testiranju filma.
1.3.5 Maskiranje
Sadraj nekog lejera moe maskirati oblikom u lejeru iznad, ako se gornji lejer proglasi za maskirni. Primer: na slici levo nalaze se dva potpuno ista pravougana oblika, na razli"itim lejerima, od kojih je jedan maskiran lejerom koji sadri elipsu.
1.3.6 Tekst
Na pozornicu se mogu dodavati i tekstualni elementi. Dodaju se kao tekstualna polja koja se definiu kao: . stati"ka, . dinami"ka ili . ulazna Stati"ko polje odre#uje svoj sadraj kucanjem potrebnog teksta tokom editovanja u samo polje. Dinami"ko polje vezuje svoj sadraj za neku promenljivu koja se definie u kodu ActionScripta, ovo polje prikazuje vrednost promenljive. Polje je definisano kada se odredi ime promenljive kojoj se polje pridruuje. Sli"no je i sa ulaznim poljem, sadraj se vezuje za promenljivu. Razlika to se korisniku dozvoljava da menja sadraj polja, time i vrednost promenljive. Tekstualna polja mogu zauzimati jednu liniju ili se prostirati na vie linija. Sli"no kao i u programu Word, mogu!a su razna podeavanja sadraja polja po osobinama paragrafa (centriranje, margine, uvla"enje, razmak izme#u redova) i karaktera (tip fonta, veli"ina, boja, stil, definisanje hiperlinka).
14 D De ej ja an n K Ka at ta a i i! !
1.3.7 Kodiranje
Vie puta pomenuti jezik ActionScript koristi se u Flashu za programiranu kontrolu toka filma. Elementi jezika nazivaju se akcije. Kod ActionScripta moe se pridruiti kju"nom frejmu i instancama simbola tipa dugme i filmski klip. ActionScript je predstavljen u narednom poglavlju.
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
15
2 ACTIONSCRIPT
Slika desno predstavlja spisak akcija u Flashu 4 kojima je bilo mogu!e uticati na tok filma. Akcije su se pridruivale odre#enom frejmu ili doga#aju nad simbolom tipa dugme. Iz spiska se vidi da su mogu!nosti programiranja pre svega bile orijentisane na upravljanje tokom filma (zaustavljanje, kretanje, skokovi na odre#ene frejmove), uz skromno prisustvo komandnih struktura naredbe grananja i loop petlje. Naredba Call imala je za zadatak poziv bloka komandi pridruenih nekom frejmu, simuliraju!i na taj na"in korisni"ku funkciju. Ovakav pristup sigurno da nije omogu!avao komotan rad s programerske ta"ke gledita, ali je doveo do pomeranja sa akcenta programa sa animacije ka interakciji, to je za rezultat imalo pojavu ireg spektra aplikacija ra#enih u Flashu. Peta verzija programa predstavlja kvalitativni pomak u pravcu programiranja, odlu"eno je da Flash postane ozbiljan alat za programiranje. U Flashu se pojavljuje ActionScript. ActionScript je skript jezik "iji je cilj kontrola objekata u Flash filmovima, kreiranje navigacionih i interaktivnih elementa i za kreiranje filmova visokog stepena interakcije i web aplikacija.
16
D De ej ja an n K Ka at ta a i i! !
Promenljiva se moe deklarisati sa var. Deklaracija odre#uje njeno ime i lokalnost, odnosno promenljiva tada postaje lokalna u bloku u kome je deklarisana. U navedenom primeru koritene su funkcije trace, koja slui za ispis string vrednosti izraza svog argumenta u posebni izlazni prozor (korisno pri testiranju programa), i typeof, koja vra!a naziv tipa izraza svog argumenta. Dvostruka kosa crta (//) predstavlja po"etak linijskog komentara, pri interpretaciji se ignoriu svi karakteri u liniji nakon ove oznake (komentar u vie linija postavlja se izme#u oznaka /* i */). Prvi poziv funkcije trace u izlazni prozor ispisuje typeof (myVar): undefined jer promenljivoj nije dodeljena vrednost, tako da joj nije odre#en ni tip. Dodela vrednosti odre#uje tip promenljive. To zna"i da promenljiva moe da menja svoj tip. U primeru, poslednjom dodelom (myVar = trace) je promenljivoj dodeljena funkcija trace,
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t 17
zna"i ona je tipa function, ona postaje funkcija koja se ponaa na isti na"in kao i trace, tako da poslednja linija poziva promenljivu myVar kao funkciju i dobija se tako#e odziv u izlaznom prozoru. Promenljiva se ne mora deklarisati. U tom slu"aju smatra se za globalnu. ActionScript vri automatsku konverziju tipova pri izvo#enju operacija, tako da nedefinisane promenljive mogu u"estvovati u operacijama, gde se prevode kao neutralni element sabiranja (logi"ko false, numeri"ki 0, string ).
2.2.2 Operatori
ActionScript definie skup ugra#enih operatora koji se mogu podeliti u slede!e grupe: numeri"ki operatori, operatori pore#enja, String operatori, logi"ki operatori, bitorijentisani operatori, operatori jednakosti i operatori dodele. Kao i u drugim programskim jezicima, operatori su hijerarhijski odre#eni po prioritetu izvravanja operacija. Zanimljivi operatori su, recimo, operatori dodele, to ilustruje slede!i primer:
var myString = my; myString += String; trace (myString: + myString);
//
myString: my String
Prva linija deklarie promenljivu myString i dodeljuje mu (obi"na dodela) String vrednost my. U drugoj linija koda tako#e je dodela, ali sa operatorom +=, to semanti"ki predstavlja slede!e: saberi vrednost operanda s leve strane operatora (promenljivu myString) sa operandom s desne strane ( String) i rezultat sabiranja dodeli promenljivoj s leve strane. Drugi primer ilustruje operatore inkrementacije (++):
var myVar = 0; trace (myVar: trace (myVar++: trace (myVar: trace (++myVar: trace (myVar: + + + myVar); + myVar++); myVar); + ++myVar); myVar); // // // // // myVar: 0 myVar++: 0 myVar: 1 ++myVar: 2 myVar: 2
Post-inkrementacija pove!ava vrednost promenljive nakon njenog u"estvovanja u izrazu, a pre-inkrementacija prvo pove!ava vrednost promenljive koja daje svoju novu vrednost za izra"unavanje izraza. Tre!i primer, uslovna dodela:
var myBool = true; var notBool = !myBool; trace (myBool: + ((myBool) ? myBool : notBool)); trace (notBool: + ((notBool) ? myBool : notBool));
Uslovna dodela je ternarni operator. Prvi operand je logi"ki izraz koji se izra"unava. Ako je izra"unao true, operator ra"una vrednost drugog operanda (iza znaka pitanja) i to vra!a kao rezultat, ina"e (izra"unato false) se ra"una vrednost tre!eg operanda (iza dvota"ke) i to postaje rezultat. U ovom primeru prvi poziv trace ispisuje myBool: true, jer se ispituje uslov myBool (true) i vra!a vrednost drugog operanda (myBool
18 D De ej ja an n K Ka at ta a i i! !
ima vrednost true), dok drugi poziv ispisuje notBool: false jer je uslov neta"an (notBool, pri dodeli je !myBool, negacija od true) pa se vra!a vrednost tre!eg operanda (notBool je false).
Ovde je condition logi"ki izraz, obavezno naveden u zagradama, na osnovu kojeg se donosi odluka da li se izvrava kod bloka naredbi unutar vitri"astih zagrada. Blok naredbi se uvek navodi unutar vitri"astih zagrada, a pojedine naredbe u bloku razdvajaju se ta"ka-zarezom (;). U slu"aju samo jedne naredbe nije neophodno navo#enje vitri"astih zagrada. Druga grana (else) tako#e nije obavezna. U ActionScriptu kod Flasha 5 ne postoji switch naredba za viestruko grananje, a to je jedna od novina koje donosi nova verzija programa, Flash MX. Ponavljanje dela koda obezbe#eno je petljama for, while, do-while i for-in. U svim petljama mogu se koristiti komande continue, za skok na slede!u iteraciju, i break, za naputanje petlje.
for (init; condition; next) { // statements }
Sli"no kao i u jeziku Java, for petlja zadaje se s tri parametra: inicijalna vrednost kontrolne promenljive, izlazni uslov i izraz za izra"unavanje pre naredne iteracije. Po definiciji je dozvoljeno izostavljanje bilo kog od ova tri dela (ostaje ta"ka-zarez). Izraz init se izra"unava samo jednom, pre po"etka prve iteracije, izraz condition mora biti logi"ki i izra"unava se pre svake iteracije i odlu"uje da li se nastavlja sa iteracijom (izra"unato true) ili ne (false), izraz next izra"unava se na kraju svake iteracije. Ovakva konstrukcija dozvoljava mnogo ve!u slobodu pri baratanju petljom u odnosu na, recimo, paskaloliku konstrukciju. Ipak, uobi"ajeno se koristi ba simulacija te osnovne konstrukcije, postavljanjem inicijalne vrednosti kontrolne promenljive u prvom delu, pore#enje kontrolne promenljive s nekom izlaznom vredno!u u drugom delu i inkrementiranje ili dekrementiranje kontrolne promenljive u tre!em delu.
while (condition) { // statements }
Dogod je uslov condition ispunjen izvrava se blok naredbi petlje while. Ovo ispitivanje moe biti i numeri"ko, u kom slu"aju se ispituje razli"itost od vrednosti 0.
do { // statements } while (condition)
Sli"no je i kod petlje do-while, s razlikom to se prvo izvrava blok naredbi, pa tek onda proverava uslov (to zna"i, kod bloka izvrava se bar jednom). Ovo podse!a na
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t 19
paskalsko repeat-until, a razlika je kod uslova do-while radi dok je ispunjen uslov, a repeat-until prekida po ispunjenju uslova.
for (variableiterant in object){ // statements }
Prva linija koda daje jedan na"in zadavanja objekta. Objekat myObject ima 3 osobine, svakoj je dodeljena odre#ena vrednost. Promenljivoj name u for-in petlji pridruuju se imena osobina objekta myObject, redom kroz iteracije. Primer tako#e prikazuje dva na"ina pristupa vrednostima osobina objekta. U izlaznom prozoru prikazan je prikaz referenciranja ta"kom, odnosno navodi se ime objekta, ta"ka i sledi ime osobine. To i jeste uobi"ajen na"in referenciranja, ali nije bilo mogu!e unutar for-in petlje pozvati myObject.name, jer bi se to odnosilo na osobinu name objekta, a ne promenljivu petlje. Stoga je kori!ena referenca myObject [name], koja izra"unava izraz u uglastim zagradama (vrednost promenljive name) i potom trai vrednost odgovaraju!e osobine objekta.
2.2.4 Funkcije
Definicija funkcije:
function myFunc ([arg0, arg1,...argN]) { // statements } // ili function ([arg0, arg1,...argN]) { // statements }
Funkcija je blok koda koji se moe vie puta koristiti pozivom funkcije. Primer poziva bio bi myFunc ([par1, par2,...parN]). U zagradi ovde nalaze se parametri funkcije, koje ona pri izvravanju ona prima kao argumente. Uglaste zagrade su u primeru navedene u smislu BNF notacije, odnosno ukazuju na opcionu pojavu parametara i argumenata. Funkcija ove parametre vidi kao vrednosne parametre, nema varijabilnih parametara, te se ne mogu menjati vrednosti ovih parametara van lokalnosti funkcije, uz dunu panju referentnim podacima, gde se moe direktno pristupati osobinama objekta, na primer. Ulazne parametre funkcija vidi kao niz arguments, broj deklarisanih imenovanih parametara funkcije ne mora da se poklapa sa brojem argumenata koji se prosle#uju funkciji. Pristup imenovanim parametrima u funkciji mogu! je direktno navo#enjem
20
D De ej ja an n K Ka at ta a i i! !
imena parametra, a pristup proizvoljnom parametru ostvaruje se kao pristup elementu niza arguments na odre#enom indeksu. Primer:
function myFunc () { var myVar; for (var i = 0; i < arguments.length; i++) { myVar += arguments [i]; } trace (myVar: + myVar); } myFunc (3, 4, to, 1, 1); // myVar: 7to11
U primeru se lokalna promenjiva myVar samo deklarie, inicijalno nema vrednost, zna"i tipa je undefined. Prvo sabiranje je sa argumentom tipa number, pa se promenljiva konvertuje u vrednost 0, sabira sa 3 i dobija vrednost 3. Sabiranje sa drugim argumentom je sabiranje dva broja, pa myVar dobija vrednost 7. Tre!i argument je tipa string, to povla"i konverziju myVar u string. %etvrti i peti argument su brojevi, ali se konvertuju u string. Tako myVar na kraju dobija vrednost 7to$$. Funkcija moe da vrati vrednost kori!enjem naredbe return returnValue, ovde returnValue predstavlja izraz "iju vrednost funkcija vra!a. Kori!enjem same naredbe return (bez izraza) samo se naputa funkcija. Naredba return je opciona
u funkciji, a moe se pojavljivati na vie mesta u kodu funkcije (obi"no nakon ispunjenja nekog uslova), vra!aju!i razli"ite vrednosti, "ak i razli"itog tipa. Primer:
function returner (inputValue) { if (inputValue < 0) return; if (inputValue == 0) return false; if (inputValue == 1) return 0; if (inputValue == 2) return ; if (inputValue == 3) return new Array (); if (inputValue == 4) return trace; } for (var i = -1; i < 6; i++) { trace (i + : + typeof (returner (i))); } /* output: -1: undefined 0: boolean 1: number 2: string 3: object 4: function 5: undefined */
Ovde je izbegnuto duboko ugnje#avanje if-else, jer se iz funkcije izlazi po prvom ispunjenju nekog uslova. U ActionScriptu postoje predefinisane funkcije, a mogu se definisati i nove. %esto se funkcija pridruuje nekom objektu, tada ona postaje metod objekta.
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
21
2.2.5 Objekti
Objekat je skup osobina koje mogu imati vrednosti nekog tipa. Svaki objekat jedinstveno se identifikuje svojim imenom. Ve! pomenuti primer:
myObject = {name:'Tara', age:27, city:'San Francisco'};
Objekat myObject ima tri osobine i svakoj osobini dodeljena je vrednost. Pristup osobini age, na primer, moe se ostvariti sa myObject.age ili myObject [age]. Dodavanje nove osobine mogu!e je: myObject.state = California, kao i modifikacija postoje!e osobine: myObject.age = 28.
function person (name, age, city) { this.name = name; this.age = age; this.city = city; } myObject = new person (Tara, 27, San Francisco);
Ovaj kod kao krajnji rezultat daje tako#e objekat myObject sa potpuno istim osobinama i vrednostima osobina kao i prethodni primer. Razlika postoji. Sada je myObject instanca klase person, a funkcija person naziva se konstruktorom klase person. Objekat se instancira pozivanjem klju"ne re"i new i konstruktora. Klju"na re" this u konstruktoru referencira na objekat koji se kreira. Slede!i primer dodaje metod klasi person:
function showPerson () { var myString = this.name + , + this.age + , + this.city; trace (myString); } person.prototype.show = showPerson; myObject.show (); // Tara, 27, San Francisco
Sve funkcije poseduju osobinu prototype koja se automatski kreira pri definiciji funkcije. Pri kreiranju novog objekta konstruktorom, sve osobine i metode konstruktorske osobine prototype postaju osobine i metode osobine __proto__ novokreiranog objekta. Kada se referencira neka osobina ili metoda objekta, ActionScript trai postoji li takva osobina ili metoda, ako ne postoji, trai se u okviru osobina i metoda njegovog __proto__ objekta (i dalje __proto__.__proto__, ...). Ovo je nasle#ivanje u ActionScriptu. Uobi"ajena praksa je dodeljivanje metoda osobini prototype konstruktora, kao to i stoji u navedenom primeru. ActionScript ve! dolazi sa dobrim skupom predefinisanih objekata. Postoji skup ugra#enih objekata preuzetih iz ECMA specifikacije: . Object najoptija klasa objekata . Array niz, sa metodama manipulaciju nizom, dodavanje i uzimanje elementa niza sa po"etka ili kraja, sortiranje itd, osobina length je duina niza... . String metode za manipulaciju stringovima, podniz, konkatenacija... . Boolean . Number konstante, najmanja i najve!a vrednost, beskona"nost... . Math aritmeti"ke i trigonometrijske funkcije, matemati"ke konstante... . Date datum i vreme
22 D De ej ja an n K Ka at ta a i i! !
Pored ovih, ugra#eni su i bitni objekti za Flashovo okruenje: . MovieClip osobine od zna"aja za vizuelnu reprezentaciju objekta, irina, visina, horizontalna i vertikalna pozicija, vidljivost, providnost, rotacija...; metode za kontrolu osobina, za kretanje po vremenskoj osi, kreiranje i unitavanje instanci, prevla"enje objekata... . Selection kontrola tekstualnih polja . Mouse skrivanje i pokazivanje pokaziva"a mia . Key konstante specijalnih tastera tastature, kodovi karaktera... . Color transformacije boje MovieClip objekata... . Sound kontrola zvuka i zvu"nih efekata . XML u"itavanje, slanje, parsiranje, izgradnja XML dokumenata... . XMLSocket stalna veza sa serverom, uspostavljanje i prekid veze... U prvom primeru, pasijans, predstavljen je deo ponaanja koje se realizuje objektom movieClip, a tre!i primer, web memorija, predstavlja objekte XML i XMLSocket.
Za jedno instancu moe se postaviti vie hendlera, zavisno od doga#aja mouseEvent. Jedan hendler moe opsluivati vie doga#aja razdvojenih zarezom u zaglavlju hendlera. Kod pridruen hendleru izvrava se kada se desi neki od doga#aja navedenih u zaglavlju hendlera. Sledi opis doga#aja koje prepoznaje objekat tipa button: . press dugme mia je pritisnuto dok je pokaziva" iznad dugmeta . release dugme mia je otputeno dok je pokaziva" iznad dugmeta . releaseOutside dugme mia je otputeno dok je pokaziva" van dugmeta
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t 23
. rollOver pokaziva" mia kre!e se iznad dugmeta . rollOut pokaziva" mia je napustio povrinu dugmeta . dragOver dok je pokaziva" iznad dugmeta, dugme mia je pritisnuto, pokaziva" pomeren van povrine dugmeta i potom vra!en iznad . dragOut dok je pokaziva" iznad dugmeta, dugme mia je pritisnuto i potom pokaziva" pomeren van povrine dugmeta . keyPress (key) taster key je pritisnut
Ovde je movieEvent neki od slede!ih doga#aja: . load akcija se inicira instanciranjem objekta njegovom pojavom u vremenskoj osi . unload akcija se inicira u prvom frejmu nakon uklanjanja objekta sa vremenske ose, a izvodi se pre bilo koje akcije vezane za posmatrani frejm . enterFrame akcija se inicira pri svakom frejmu, a izvodi se nakon svih akcija vezanih za posmatrani frejm . mouseMove akcija se inicira pri svakom pomeranju mia . mouseDown akcija se inicira pritiskom na levo dugme mia . mouseUp akcija se inicira otputanjem levog dugmeta mia . keyDown akcija se inicira pritiskom na neki taster . keyUp akcija se inicira otputanjem tastera . data akcija se inicira prijemom podataka pri u"itavanju
24
D De ej ja an n K Ka at ta a i i! !
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
25
3.1.1 Karte
Karte su grafi"ki objekti sa kojima korisnik vri interakciju, tj. igra igru. Na karti su uo"ena tri dela: . prednji . zadnji . dugme Svaki deo moe biti vidljiv ili nevidljiv, u zavisnosti od stanja u kome se neka posmatrana karta nalazi. Stanje otvorena predstavlja kartu kojoj se vidi lice, a nali"je ne vidi, dok stanje zatvorena vidi nali"je i ne vidi lice. Dugme na karti svojom vidljivo!u (dugme je providno) dozvoljava ili ne korisni"ku interakciju. Karte su u potpunosti vektorski realizovane, tako da se, na primer, lice karte se, pri prvom zahtevu za prikaz lica, inicijalizuje preko vrednosti simbola i veli"ine karte postavljanjem odgovaraju!ih simbola na predefinisane pozicije za odgovaraju!u veli"inu.
3.1.2 Kolone
Kolone zauzimaju centralnu povrinu aplikacije. Ima ih sedam i mogu sadravati karte. Karte u koloni mogu biti otvorene ili zatvorene. Prilikom deljenja se postavlja odre#eni broj zatvorenih karata ("iji broj ta"no odgovara rednom broju kolone) i na vrh jedna otvorena karta. Tokom igre se karte se prebacuju i sa kolona i na kolone, a zatvorene karte se otvaraju.
3.1.3 Dek
Dek je ostatak karata iz pila koji pri deljenju nije stao na kolone. Nalazi u se u gornjem levom uglu. Podeljen je na deo u kome se nalaze zatvorene karte i drugi s otvorenim kartama. Pri deljenju se preostale karte smetaju u zatvoreni deo. Karta na vrhu zatvorenog dela reaguje na klik prebacivanjem (okretanjem) odre#enog broja karata u otvoreni deo, a karta na vrhu otvorenog dela moe se prebacivati na kolone ili stekove.
3.1.4 Stekovi
Cilj igre je prebaciti sve karte na stekove. Postoji "etiri steka, a sve karte u nekom steku moraju biti istog znaka i re#aju se od najmanje ka najve!oj. Stekovi se nalaze gore, desno.
3.2 INTERAKCIJA
Korisnik sa kartama moe da "ini slede!e, u zavisnosti od toga gde se karta nalazi:
D De ej ja an n K Ka at ta a i i! !
26
dodavanje novog objekta je attachMovie. Ovaj metod zahteva tri parametra. Prvi parametar jeste naziv objekta iz biblioteke koji se eli instancirati. Sam naziv je izvozno ime bibliote"kog elementa koji je proglaen kao izvozni, to omogu!ava instanciranje ovim metodom. Drugi parametar metoda je jedinstveni naziv (u odgovaraju!oj lokalnosti) elementa koji se kreira. Kori!enje postoje!eg imena za posledicu proizvodi zamenu objekta. Tre!i parametar jeste dubina. To je vrednost ve!a ili jednaka nuli. Na odre#enoj dubini moe se nalaziti najvie jedan movieClip objekat. Dodela zauzete dubine novom objektu brie postoje!i objekat na istoj dubini. Broj dubine je bitan zbog vizuelizacije, jer se dublji objekti (manji broj) nalaze ispod... Ve! je napomenuto da se karte sastoje iz tri dela "ija vidljivost prikazuje stanje karte. Karta je grafi"ki predstavljena objektom tipa movieClip i ona sadri tri objekta istog tipa koji predstavljaju lice i pozadinu karte, i dugme. Karti su dodeljeni metodi za prikazivanje i sakrivanje ovih elemenata. Inicijalno se metodama za prikazivanje dodeljuju funkcije za kreiranje samih elemenata i metodama za sakrivanje prazna funkcija, dok se nakon prvog poziva metoda za prikazivanje, nakon inicijacije elementa karte, metodama se pridruuju funkcije za prikazivanje i sakrivanje elementa, respektivno. Na primeru pozadine to izgleda ovako:
Klju"na re" this referencira kartu kojoj su pridrueni metodi, pri pozivu metoda. Pri inicijaciji same karte doljejuje joj se prazan movieClip nazvan myMovie i postavlja metod showBack = _root.initBack. _root je korenski objekat, movieClip u kom se nalazi kompletan kod ovog primera (to ne mora tako da se realizuje). Pri prvom pozivu showBack izvri!e se initBack (), odnosno bi!e dodat movieClip objekat u myMovie pod nazivom myBack na dubinu backLevel (svaki deo karte ima svoju dubinu), a metodama se dodeljuju nove funkcije.
3.3.2 Dugme
Sli"nu inicijaciju ima i dugme. Dugemetu se dodeljuje osobina myCard koja referencira na kartu. myButton je tipa movieClip, a sadri providno dugme koje reaguje na akcije mia. Ovo iz razloga da se omogu!i uklanjanje dugmeta po potrebi. Dugme sadri slede!e akcije:
on (press) {myCard.onPress ();} on (release, releaseOutside) {myCard.onRelease ();}
Referencira na metode svoje karte. Ova realizacija predstavlja hendlere. Dodelom odgovaraju!ih funkcija ovim metodama karte obezbe#uje se odgovaraju!e ponaanje karte u posmatranom stanju.
28 D De ej ja an n K Ka at ta a i i! !
Karte se meaju (metod scramble) i kopiraju (reference) u privremeni niz newCards koji se potom koristi za dodelu karata kolonama i deku. Drugi argument metoda dealToMe kod kolona predstavlja da li se karta postavlja licem (true) ili nali"jem (false), dok kod deka vrednost true predstavlja kartu sa vidljivim dugmetom. Deli se otvorena karta na prvu kolonu, pa zatvorene na ostale, dalje otvorena na slede!u kolonu i zatvorene na ostale i tako redom dok se na poslednju kolonu ne postavi otvorena karta. Ove karte uzimaju se odozgo metodom pop, a preostale se redom sputaju na dek, odozdo metodom shift.
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
29
30
karata, a ako hitTest svuda vra!a false, jednostavno se karte ponovo postavljaju kao vidljive i nikakva promena se ne deava u odnosu na situaciju pre prevla"enja.
Funkcija addUndo je metod objekta options, tako da se this odnosi na njega. Metodi showUndo, hideUndo, showRedo i hideRedo pale i gase dugmi!e za undo i redo (ako je neki niz prazan, ne moe se pozvati akcija). Nizovi sadravaju objekte (undoAction) sa delovima za undo (myUndo) i redo (myRedo). Metod addUndo dodaje objekat na niz undoArray i prazni niz redoArray. Metod doAction pokazuje ta su myUndo i myRedo:
function doAction (myAction) { var action; for (i = myAction.length - 1; i >= 0; i--) { action = myAction [i]; action [0].doThis = action [1]; if (action.length == 2) {action [0].doThis ();} else {action [0].doThis (action [2]);} } }
Parametar u doAction, myAction, je ili myUndo ili myRedo, a metod se poziva putem metoda doUndo ili doRedo, iniciranih klikom na odgovaraju!e dugme. Parametar myAction je niz akcija koje definiu promenu u sistemu. Akcije se pamte kao nizovi, gde je prvi "lan referenca na objekat, drugi "lan referenca na funkciju objekta i tre!i opcioni "lan je referenca parametra funkcije. Metodu doThis objekta (action [0]) dodeljuje se funkcija (action [1]). Potom se poziva metod doThis, ako ima parametra (action.length != 2) sa parametrom (action [2]), ina"e bez parametra.
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
31
Ovakav pristup je zadovoljavaju! jer primer nije zahtevao akcije koje sadre vie od jednog parametra, mada je mogu!e i uoptenje za proizvoljan broj parametara. Ovakva realizacija zahteva ta"no definisanje svih akcija koje se izvode pri jednoj promeni stanja kao i inverznih akcija.
32
D De ej ja an n K Ka at ta a i i! !
Slika prikazuje izgled slagalice formata 3*3 pre slaganja (levo) i nakon slaganja (desno). Postoji interaktivna verzija slagalice gde igra" pomera delove slagalice kliktanjem na njih u ovom slu"aju je posao preputen Flashu i ActionScriptu. Korisnik moe da uti"e na broj vrsti i kolona, odnosno dimenziju slagalice, da zada komandu za generisanje po"etnog problema klikom na dugme deli i nakon generisanja da zada komandu za traenje optimalnog reenja (najmanji broj poteza) na dugme rei. Po nalaenju reenja delovi se pomeraju kroz generisanu animaciju, broja" poteza belei pomeranja delova, a kraj svega je po zavretku animacije svi delovi se nalaze
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t 33
na svojoj ciljnoj poziciji a vrednost broja"a poteza je broj poteza u minimalnom reenju. Za realizaciju ovako predstavljenog problema potrebno je obezbediti generisanje po"etnog problema na osnovu zadatih dimenzija, pogodnu strukturu i algoritam za traenje reenja i odgovaraju!u grafi"ku reprezentaciju reenja.
Ovde je myNumber jednak ba m*n, tako da se nakon for petlje dobija niz brojeva od nule do myNumber - 1. Sada se niz myArray izmea na neki dopustiv na"in. U tu svrhu dodeljuje mu se metod scramble:
myArray.scramble = function () { var myIndex, temp; var odd = ((myNumber % 2) != 0); this.push (this.shift ()); for (i = this.length - 1; i > 2; i--) { myIndex = Math.floor (Math.random () * i); odd = (myIndex % 2 != 0) ? odd : (!odd); temp = this [myIndex]; this.splice (myIndex, 1); this.push (temp); } if (odd) { this.push (this.shift ()); this.push (this.shift ()); } else { temp = this.shift (); this.push (this.shift ()); this.push (temp); } }
Za validnost meanja odgovorna je promenjiva odd, jer reivost zavisi od parnosti permutacije elemenata niza. Ideja je da se slu"ajno vade elementi niza i stavljaju na kraj, pri "emu se vodi ra"una o tome da se bira od preostalih elemenata niza. Prvo se na kraj prebacuje vode!i element, jer se njemu odgovaraju!i deo nalazi pored rupe i pomeranjem tog dela se uopte omogu!ava kretanje ostalih delova. Potom se kroz for petlju obezbe#uje meanje ostalih elemenata niza i na kraju, kada preostanu samo dva neizmeana, u zavisnosti od vrednosti odd, odre#uje se u kom redosledu !e oni biti postavljeni na kraj niza. Preostaje samo pozivanje metoda:
myArray.scramble ();
34
D De ej ja an n K Ka at ta a i i! !
4.2 STRUKTURA
Prirodna struktura po opisu problema je matrica odgovaraju!eg formata koja sadri elemente, recimo objekte, koji vode ra"una o potrebnim informacijama. Matrica je promenljiva matrix kojoj su pridruena dva metoda za pretragu nad njenim elementima: search i newSearch.
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
35
Promenljiva myNode predstavlja na#eni "vor koji odslikava poziciju pretrage. Kada se program na#e u ovom delu koda to zna"i da su presko"ena sva odsecanja i da postoji potreba za daljom pretragom. Zato se pove!ava vrednost parametra moveNum koji !e se prosle#ivati metodu newSearch, jer se radi o narednom potezu (ovo se radi samo jednom). Pretpostavlja se da se "vor ne nalazi na putu reenja, a ako se na#e da jeste, to !e biti zabeleeno. Uslov kae da se pretraga na gore moe izvoditi samo u slu"aju da se ne nalazimo u najgornjoj vrsti matrice (nulta vrsta). Slede!i uslov ispituje uspenost pretrage na gore i, ako je ispunjen, zaklju"uje se da se "vor nalazi na putanji i da je na#en njegov slede!i "vor. Sli"no se ispituje i za ostale smerove, desno, dole i levo, koje vra!aju "vor samo ako je prona#en kra!i put. Na kraju:
if (myNode.onWay) { myNode.direction = direction; return myNode; } return null;
Ako je "vor na putu, postavlja mu se odgovaraju!i smer ulaza i vra!a se "vor, ina"e je pretraga neuspena i vra!a se null.
36
D De ej ja an n K Ka at ta a i i! !
4.4 ANIMACIJA
Kada reenje postoji, koristi se najve!a prednost Flasha animacija. Na ovom mestu od pomo!i je slika vremenske ose simbola elementa slagalice:
Vide se tri lejera. Gornji lejer sadri labele objekta, srednji kod, a na donjem lejeru nalazi se objekat koji se animira. Po instanciranju objekta automatski kre!e da se odvija njegova vremenska komponenta. Kako inicijalno nije potrebna nikakva animacija, u lejeru code ubacuje se instrukcija stop (); koja prekida dalje kretanje vremenske ose. Takvo stanje zadrava se sve do nalaenja reenja i do prozivanja objekta da izvri neku animaciju. Poziv mu se upu!uje instrukcijom gotoAndPlay koja kao parametar ima naziv labele frejma od koje treba da nastavi sa odvijanjem animacije. Ukoliko, na primer, element slagalice treba da se kre!e gore, dobija instrukciju Pomera se na po"etni frejm labele up, gde se u lejeru object nalazi objekat na svojoj startnoj poziciji (crna ta"ka u lejeru ozna"ava klju"ni frejm). Poslednji frejm grupe up tako#e sadri klju"ni frejm u lejeru object, gde se nalazi objekat pomeren nagore za visinu objekta. Strelica u lejeru object izme#u klju"nih frejmova ozna"ava animaciju, zadatak Flashu da distribuira promene stanja objekta po frejmovima izme#u dva klju"na frejma. Malo slovo a u lejeru code predstavlja klju"ni frejm sa kodom u ActionScriptu. To je slede!i kod:
gotoAndPlay (up). setProperty (this, _visible, false); setProperty (this, _y, getProperty (this, _y) - 80); gotoAndPlay ("base");
Prva linija koda privremeno gasi objekat, druga ga pomera za jednu visinu (80) nadole (zato to je animacijom za toliko otiao gore) i tre!e pomera objekatat na labelu base, koja pali objekat (setProperty (this, _visible, true);) i nakon pauze od nekoliko frejmova:
_parent.animate (); stop ();
Daje se instrukcija programu da moe da nastavi sa animacijom i zaustavlja svoju animaciju. Funkcija animate prati tok reenja i daje direktive za izvo#enje animacije:
function animate () { if (solution != null) { hole.action = actions [solution.direction]; hole.action (); solution = solution.next; } }
Na po"etku animacije solution je prvi "vor reenja. Niz actions sadri funkcije koje vode ra"una o tome koji element slagalice treba da se pozove na animaciju, vode!i
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t 37
ra"una o smeru. Uo"ena funkcija pridruuje se objektu hole kao metod action, koji se odmah i poziva i na taj na"in inicira se animacija potrebnog elementa matrice. Objekat hole svojim metodom action, odnosno funkcijama iz niza actions, vodi ra"una o poziciji rupe, zadaje komande mov elementima za za kretanje u odre#enom smeru i vri razmenu mov elemenata u okviru matrice pri pomeranju.
4.5 PERFOMANSE
Algoritam backtrackinga je izuzetno nezahvalan u interaktivnim sistemima, pove!anjem dimenzije problema viestruko se uve!ava broj operacija algoritma. Kod slagalice, pri testiranju programa, uo"ava se da je dobijanje reenja na slagalici formata 2*2 gotovo trenutno, sli"no je i sa formatima 2*3 i 3*2, dok format 3*3 na novijim ra"unarima daje odziv u roku od nekoliko desetina sekundi do minuta, to se moe proceniti kao dovoljno za demonstraciju, ali nedovoljno za interaktivnu primenu. Dozvoljen format 4*4 stoga nije ni testiran. Ovakvi rezultati daju ideju za testiranje brzine Flasha i ActionScripta. Funkcija getTimer vra!a broj milisekundi proteklih od startovanja programa i moe se iskoristiti za merenje vremena nalaenja reenja na slede!i na"in:
time = - getTimer (); var temp = search (0, 0, 1, down); time += getTimer ();
Po izvrenju ovog dela koda promenljiva time sadrava broj milisekundi proteklih prilikom nalaenja reenja. Za samo testiranje je napravljen novi program.
Program sadri niz od pet predefinisanih ulaznih stringova koji odgovaraju razli"itim po"etnim problemima. Selekcijom odre#enog testa i pritiskom na dugme do the job program startuje sa izvravanjem, kreira se struktura i izvrava algoritam pretrage, nakon kojeg se u desnom delu prikazuju rezultati testa: redni broj testa, ulazni niz, duina na#enog reenja, reenje (kao niz smerova koji bi se redom dodeljivali elementima pri animaciji, 0 je gore, $ desno, 2 dole i 3 levo) i izmereno vreme
38 D De ej ja an n K Ka at ta a i i! !
pretraivanja. Sam algoritam je uproten, odnosno trai se samo prvo reenje, ne i optimalno.
Pet kolona sa brojevima predstavlja rezultate (broj milisekundi proteklih pri traenju reenja) pet merenja testova (po vrstama). Poslednja kolona sadri prose"nu vrednost svih merenja jednog testa. Tokom svih testova uo"eno je da se odstupanje vrednosti pojedina"nih merenja od proseka kre!e do granice od $-2% (u ve!ini testova su ova odstupanja i manja). Slika desno prikazuje relativni odnos prose"nih vremena po testovima. Pokazalo se da je ovaj odnos konstantan pri svim testiranjima, tako da je za dalju analizu dovoljno da se koristi samo suma proseka svih testova (gornje levo polje u tabeli). Slede!a tabela sadri sume proseka svih testova (druga kolona tabele).
01 02 03 04 05 06 07 08 09 7918,4 886,4 841 8130,6 7932 845 889,8 841,6 868,4 Test Slagalica Flash 5.exe Test Slagalica Flash MX.exe Test Slagalica Flash MX as Flash 5.exe Player 5, Test Slagalica Flash 5.swf Player 5, Test Slagalica Flash MX as Flash 5.swf Player 6, Test Slagalica Flash 5.swf Player 6, Test Slagalica Flash MX.swf Player 6, Test Slagalica Flash MX as Flash 5.swf MS IE, Test Slagalica Flash 5.html 39
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
10 11 12 13 14
U tabeli se koriste slede!e oznake za browsere: . MS IE Microsoft Internet Explorer 6.0.2600.0000.xpclient.0$08$7-$$48 . Opera Opera 5.0$ build 840 Oba browsera imaju plug-in za Flash Player 6. Isti podaci pregledniji su na grafikonu dole:
Rezultati govore, pre svega, u korist novog plejera, oko 9 (!) puta bolje vreme u odnosu na stari plejer (oznaka $ je izvrni fajl sa ugra#enim plejerom Flasha 5, 4 je .swf Flasha 5 iz njegovog plejera, i oznaka 5 .swf iz Flasha MX za Player 5 iz Playera 5). Tako#e, vrednosti merenja verzije iz Flasha 5 ($, 4, 6, 9, i $2) i Flasha MX za Player 5 (3, 5, 8, $$ i $4) se gotovo poklapaju, dok verzija iz Flasha MX za Player 6 (2, 7, $0 i $3) daje vrednosti slabije za oko 5%. Vrednosti postignute u projektorima ($-3) bliske su vrenostima postignutim u samostalnim plejerima (4-8), a merenja u Internet Exploreru (9-$$) daju rezultate slabije za oko 2%, u Operi ($2-$4) za oko 25% slabije rezultate u odnosu na samostalni plejer.
40
D De ej ja an n K Ka at ta a i i! !
Slika prikazuje scenu iz igre. Glavni deo povrine zauzimaju delovi koje igra"i okre!u, a sa desne strane prikazane su korisne informacije za igru: ko je na potezu, broj pogodaka oba igra"a i statistika (broj pobeda) igra"a. Igra" koji igra upisao se pod imenom Player $ i ima dve pobede i tri okrenuta para, njegov protivnik se predstavio kao Player 2 i pogodio je dva para, na potezu je Player $ koji je okrenuo delove sa
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t 41
slovima Z i G, to zna"i da je promaio i da slede!i potez igra Player 2. U gornjem desnom uglu nalazi se dugme za predaju.
5.1.3 Server
Klijent je na server vezan preko odre#enog porta. Server mora da ima aktivan program zaduen za ovaj port. Jedno od pogodnih reenja za ovu serversku aplikaciju jeste kori!enje programskog jezika Java koji poseduje klasu ServerSocket "iji objekti
42 D De ej ja an n K Ka at ta a i i! !
preuzimaju kontrolu nad odre#enim portom na ra"unaru, kao i mogu!nost rada sa vie niti (multithread) to omogu!ava opsluivanje vie klijenata u isto vreme. Kao serverska aplikacija koritene su (autor Derek Clayton) Java klase CSClient (realizuje opsluivanje klijenta) i CommServer (dri port i stara se o klijentima). Server se podie pozivanjem klase CommServer i parametrom za broj porta. Server primljenu poruku od nekog klijenta prosle#uje svim svojim klijentima. Pri konekciji ili diskonekciji nekog klijenta, server alje svim klijentima poruku o trenutnom broju klijenata na serveru.
Da bi igra" mogao da igra igru, potrebno je konektovati se na server. Prva stvar koja se o"ekuje od korisnika jeste proces logovanja. Korisnik u tekstualno polje unosi ime pod kojim se prijavljuje na server i pritiska dugme za konekciju. Ako je konekcija uspena, korisnikov program je ostvario vezu sa serverom. Server alje poruke o trenutnom broju klijenata svaki put kada do#e do promene ovog broja (kada se prijavi novi korisnik ili neki napusti server). Svi klijenti primaju ovu poruku od strane servera i u zavisnosti od stanja u kom se trenutno nalaze, izvode odre#ene akcije. Ako na serveru nije bilo klijenata, korisnik ostvarenom konekcijom postaje prvi klijent i, poto je Web memorija igra za dva igra"a, prelazi u stanje "ekanja na drugog igra"a. Ako se korisnik loguje kao drugi klijent, to zna"i da igra moe da po"ne: drugi klijent alje poruku kojom se predstavlja, na ta prvi klijent alje poruku kojom se tako#e predstavlja i izmeani niz karaktera koji odgovara karakterima na delovima igre, na osnovu koje se generie tabela za igranje i prvi igra" dobija pravo na potez. Logovanje tre!eg i ostalih klijenata ih tera na naputanje igre, prelazak u stanje za rekonekciju, dok igra"i ove poruke ignoriu. Ovo zato to nije vrena modifikacija klasa u serverskoj Java aplikaciji, koja je pisana kao optija i sa mogu!no!u opsluivanja ve!eg broja klijenata.
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
43
5.3 PORUKE
Tokom programa razmenjuju se XML poruke izme#u servera i klijenata. To su u stvari XML dokumenti. Poruke koje se koriste u programu: . <NUMCLIENTS>numOfClients</NUMCLIENTS> poruka koju server alje pri konekciji i diskonekciji klijenata . <SECOND>playerName</SECOND> poruka drugog igra"a, prosle#uje ime . <DEALER>playerName</DEALER><ARRAY>startArray</ARRAY> odgovor prvog igra"a drugom, predstavlja se sa playerName, a startArray predstavlja redosled karaktera koji se dodeljuju delovima . <FROM>ordNum</FROM><MOVE>pieceID</MOVE> regularan potez. alje se pri okretanju nekog dela. Vrednost ordNum je redni broj igra"a koji je okrenuo deo, a pieceID identifikator okrenutog dela. XML dokument je skup tagova (oznaka) koji mogu imati svoju vrednost, atribute (osobina taga koja moe imati vrednost) i druge tagove. Objekat XML ima za cilj da verno predstavi strukturu XML dokumenta, tako da je sam objekat u stvari kolekcija, odnosno niz childNodes, XML objekata, svi tagovi dokumenta reprezentuju se kao XML objekti u okviru ovog niza.
5.4 PROGRAM
Za realizaciju je potreban jedan objekat XMLSocket kojim se ostvaruje veza sa serverom. U promenljivim host i port "uvaju se adresa ra"unara servera i port preko kog se ostvaruje konekcija. Zahtev za logovanje, pritiskom na dugme za konekciju, poziva funkciju connect.
44 D De ej ja an n K Ka at ta a i i! !
5.4.1 Konekcija
function connect () { mySocket = new XMLSocket(); mySocket.onConnect = handleConnect; mySocket.onClose = handleClose; mySocket.onXML = handleIncoming; if (!mySocket.connect (host, port)) { gotoAndStop ("notConnected"); { }
Kreira se objekat, odre#uju njegovi hendleri i uspostavlja se konekcija metodom connect. U slu"aju neuspene konekcije ostaje da se pokua ponovo ili odustane. Ako je konekcija uspela, moe se po"eti sa prijemom i slanjem XML poruka.
Argument funkcije sendMessage je string, tekst XML poruke. Kreira se XML objekat, parsira poruka i alje putem mySocket na server.
Zna"i, leadNode je naziv vode!eg taga XML dokumenta koji je primljen i na osnovu njega moe se ta"no odrediti koji tip poruke je primljen. Dalje se prati opisano ponaanje i izvla"e potrebni podaci.
messageObj.childNodes [i].firstChild.nodeValue
Promenljiva myMove signalizira da li je igra" na potezu ili ne. U svakom trenutku, jedan od igra"a ima vrednost ove promenljive postavljenu na true, dok je kod drugog setovana na false. Inicijalno stanje uspostavlja se pri po"etku partije kada prvoprijavljeni igra" dobija pravo na potez. Kako se svaki potez igra"a u stvari sastoji od okretanja dva dela, promenljiva even vodi ra"una o parnosti broja okrenutih delova. Pri okretanju svakog dela ova promenljiva negira svoju vrednost. Sledi kod koji se dodeljuje dugmadima u sastavu delova. Vidi se da se kod nalazi u okviru hendlera on i da se kod izvrava po otputanju levog dugmeta mia sa dugmeta dela web memorije. Dugme reaguje samo ako se igra" nalazi na potezu (_root.myMove):
on (release) { if (_root.myMove) { // statements } }
Ako je igra" na potezu, ispituje se da li je odigrani broj poteza bio paran ili ne i u zavisnosti od toga izvode odre#ene akcije. (slede!i kod nalazi se na mestu gorenavedenog komentara) Ako je even:
if (_root.even) { _root.newMove (this.row, this.column); value._visible = true; _parent.el = this; _root.even = false; }
Funkcija newMove generie sadraj poruke FROM:MOVE i prosle#uje ga na slanje u sendMessage. Naredna linija koda uklju"uje karakter posmatranog dela tako da igra" vidi koji znak je dodeljen delu. Osobina el objekta memory, koji sadri sve delove pa se odavde i vidi kao _parent objekat, pokazuje se na posmatrani deo, to !e biti od koristi pri okretanju drugog dela i upore#ivanja vrednosti dodeljenih im karaktera. Na kraju se even postavlja na false, jer odigran je neparni potez. Ako pak nije even (else grana prethodnog if):
if (!_root.locked && (this != _parent.el)) { _root.newMove (this.row, this.column); value._visible = true; _root.locked = true; attachMovie ("waiter", "waiter", 432); }
Ako nije zaklju"ano (tre!a uslovna promenljiva, locked, objanjena je u nastavku) i ako je pritisnuti deo razli"it od prethodno pritisnutog dela (koji se pamti u promenljivoj el), tako#e se alje poruka i uklju"uje karakter pritisnutog dela. Potom se vri zaklju"avanje setovanjem locked na true i kontrola se predaje movieClipu waiter. Ovaj element pravi vremensku pauzu jer se sastoji od nekoliko praznih frejmova pre frejma u kome se nalazi kod koji izvodi dalja ispitivanja. U ovom trenutku, pri ka"enju klipa waiter, onemogu!ena je svaka interakcija (igra" koji nije na potezu ima myMove na false, igra" na potezu ima even na false i locked na true). Pre nego to vidimo o "emu se stara waiter, da vidimo kako se obra#uju pristigle poruke o odigranom potezu. Kod je iz funkcije handleIncoming koja je
46
D De ej ja an n K Ka at ta a i i! !
pridruena hendleru onXML objekta mySocket. Kada poruka nije ni NUMCLIENTS, ni SECOND, ni DEALER:
if (userOrdNum != messageObj.firstChild.firstChild.nodeValue) { // statements }
U lokalnu promenljivu el smeta se deo koji odgovara delu koji je protivnik okrenuo (elementi objekta memory nazvani su e + vrstaDela + kolonaDela, to odre#uje poziciju dela na polju igre, imena po"inju sa e da bi mogli biti identifikatori), njegov karakter postaje vidljiv igra"u i, sli"no kao i kod protivnika, ispituje se da li je broj poteza bio paran ili ne. Tako#e i preduzima potpuno iste akcije: ako jeste paran, postavlja memory.el i negira even, a ako nije zaklju"ava i ka"i waiter. Objekat waiter ka"i se na drugi okrenuti deo jer sadri u _parent referencu na njega:
var e0 = _parent._parent.el; var e1 = _parent;
Ako su vrednosti karaktera dva okrenuta dela jednaki, postignut je pogodak. Delovi se isklju"uju i treba brojati pogodak. Ako je igra" bio na potezu, to je njegov pogodak (myHit++), ina"e je pogodak protivnika (opponentHit++). Promenljiva left dri informaciju o preostalom broju parova koje treba pogoditi i, kako je postignut pogodak, umanjuje se za jedan. Ako je pogo#eni par ujedno i poslednji, donosi se odluka o pobedniku (u igri je 30 delova, odnosno $5 parova, to garantuje mogu!nost odluke o pobedi igra"a sa ve!im brojem pogodaka). Ako je broj pogodaka igra"a manji
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
47
od pogodaka protivnika, on je izgubio pa se diskonektuje, ina"e je pobedio i broji pobedu vie. Ina"e, ako se vrednosti karaktera dva okrenuta dela ne podudaraju:
e1.value._visible = false; e0.value._visible = false; _root.myMove = !_root.myMove; _root.updatePlayer ();
Gase se karakteri okrenutih delova, menja se igra" koji je na potezu, updatePlayer postavlja ispis imena igra"a na potezu. Posle svega, jo malo administracije:
_root.even = true; _root.locked = false; this.removeMovieClip ();
Odigran je paran broj poteza, uklanja se zaklju"avanje igre, a waiter je odradio posao i moe se ukloniti.
48
D De ej ja an n K Ka at ta a i i! !
ZAKLJU%AK
%injenica da predstavljeni primeri imaju veli"inu korisni"kog fajla (.swf filma) od tridesetak KB, a da u potpunosti definiu ponaanje aplikacije i realizuju kompletan korisni"ki interfejs, nedvosmisleno govori u prilog tvrdnji da Flash filmovi jesu pravo reenje u svetu Interneta. Vektorska grafika i animacija Flasha i jezik ActionScript svojom raznovrsno!u omogu!avaju reavanje irokog spektra web problematike. Od kreiranja navigacionih reenja u okviru HTML stranica, animiranih reklamnih sli"ica, do izrade kompletnih web-prezentacija u Flashu i direktnu razmenu podataka sa web serverom i njihovu dalju obradu. Svojom rasprostranjeno!u Flash ve! danas jeste standard, a sutra je ve! po"elo, jer tu je Flash MX, koji definitivno zaokruava pri"u koju je zapo"eo Flash 5 uvode!i ActionScript.
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
49
LITERATURA
. Standard ECMA-262, 3rd Edition December $999 . Philip Kerman : ActionScripting in FLASH, SAMS Publishing, 200$ . Macromedia : Using Flash MX, 2002
50
D De ej ja an n K Ka at ta a i i! !
BIOGRAFIJA AUTORA
Dejan Katai! je ro#en u Novom Sadu 3. juna $970. godine, od majke Dragice i oca Petra, i ima i sestru Jovanku-Vanju. Od 27. januara $999. godine je u braku sa Milkom (devoja"ko Stanarevi!), a 2$. marta iste godine postaje sre!ni otac Helene. Osnovno obrazovanje stekao je u kolama Petefi andori Prva vojvo#anska brigada iz Novog Sada. Zajedni"ko srednje obrazovanje sti"e u SM 7. april iz Novog Sada. Na prole!e $987. osvaja 26 poena na pokrajinskom takmi"enju iz matematike. Usmereno srednje obrazovanje zavrava u Tehni"koj koli za vojna usmerenja (TVU) u Zagrebu, $3. jula $989, kada sti"e zvanje Radnik IV stepena stru"nosti za elektri"ne ure#aje na motornim i borbenim vozilima. Studije na smeru diplomirani informati"ar na Institutu za matematiku i informatiku, PMF Novi Sad, zapo"eo je $992. godine kao redovan student, gde je poloio sve ispite predvi#ene nastavnim planom i programom. Od 3$. jula $989. do 3$. jula $993. zaposlen je u Novom Sadu u svojstvu gra#anskog lica na slubi u JNA (kasnije civilno lice na slubi u VJ) na radnom mestu Elektromehani"ar za vozila guseni"are, ujedno i to"kae. Od aprila $997, pa do kraja te godine, zaposlen je u firmi DD infoMedia iz Novog Sada, gde radi na izradi prezentacija za Internet i odravanju web-sajta yumedia.com. Projekati ra#eni u tom periodu su: jedna od prvih web-galerija slika novosadskih umetnika (Alfa art media gallery), prvi filmski festival iz Jugoslavije na Internetu (6. jugoslovenski festival igranog filma Novosadska arena), jedne od prvih doma!ih koncertnih manifestacija na Internetu (NS plus trand festval 97 i Koncert godine 97), prezentacija slika novosadskog slikara Marka Milovi!a i probno Internet izdanje Vojvo#anskog gra#anskog lista Nezavisni. Godine $998. nastavlja samostalan rad na web prezentacijama. Od maja $998. do jula $999. odrava nedeljno web-izdanje lista Nezavisni (www.nezavisni.co.yu). Od septembra $998. do aprila 2000. vodi sajt novisad.com. Od septembra $998. odrava sajt DD Zvezda Film iz Novog Sada (zvezdafilm.novisad.com), gde je do sada ispra!eno "etiri festivala doma!eg igranog filma Novosadska arena, vie manifestacija Fokus i Cinemania, i predstavljeno stotinak filmova. Po"etkom 200$. predstavlja pekaru Milan iz Novog Sada na Internetu (www.pekara-milan.co.yu). Tokom 2000. godine u"estvuje u projektu organizacije aDigital iz Novog Sada na ra"unarskom opismenjavanju kadrova iz nevladinih organizacija, gde vodi kurseve Windowsa i izrade Internet prezentacija. Poznaje jezike HTML i JavaScript, upoznat je sa problematikom prezentacije razli"itih sadraja na Internetu, klijentskog i serverskog skriptovanja, kori!enjem baza podataka na Internetu i drugih tema vezanih za Internet. Tako#e, zna Flash i ActionScript.
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
51
52
D De ej ja an n K Ka at ta a i i! !
Redni broj Identifikacioni broj Tip dokumentacije Tip zapisa Vrsta rada Autor Mentor Naslov rada Jezik publikacije Jezik izvoda Zemlja publikovanja Ue geografsko podru"je Godina Izdava" Mesto i adresa Fizi"ki opis rada Nau"na oblast Nau"na disciplina Predmetne odrednice, klju"ne re"i
Monografska dokumentacija Tekstualni tampani materijal Diplomski rad Dejan Katai! dr Zoran Budimac Flash i ActionScript srpski (latinica) s/en SR Jugoslavija Vojvodina 2002 autorski reprint Novi Sad, Trg D. Obradovi!a 4 (5/ 54/ 0/ 2/ $5/ 2/ 0) Ra"unarske nauke Internet tehnologije Flash, ActionScript, Word Wide Web, Internet, vektorska grafika, animacija, interakcija, skriptovanje
%uva se %U Vana napomena VN Izvod IZ Vektorska grafika i animacija Flasha i jezik ActionScript svojom raznovrsno!u omogu!avaju reavanje irokog spektra web problematike. Od kreiranja navigacionih reenja u okviru HTML stranica, animiranih reklamnih sli"ica, do izrade kompletnih web-prezentacija u Flashu i direktnu razmenu podataka sa web serverom i njihovu dalju obradu. Datum prihvatanja teme od DP maj 2002. strane NN ve!a Datum odbrane DO jun 2002. %lanovi komisije KO Predsednik dr Mirjana Ivanovi!, redovni profesor, Prirodno-matemati"ki fakultet u Novom Sadu %lan dr Milo Rackovi!, vanredni profesor, Prirodno-matemati"ki fakultet u Novom Sadu %lan dr Zoran Budimac, vanredni profesor, Prirodno-matemati"ki fakultet u Novom Sadu
F Fl la as sh h i i A Ac ct ti io on nS Sc cr ri ip pt t
53
UNIVERSITY OF NOVI SAD FACULTY OF NATURAL SCIENCES & MATHEMATICS KEY WORDS DOCUMENTATION Accession number Identification number Document type Type of record Contents code Author Mentor Title Language of text Language of abstract Country of publication Locality of publication Publication year Publisher Publ. place Physical description Scientific field Scientific discipline Subject Key words ANO INO DT Monograph documentation TR Textual printed material CC Graduation thesis AU Dejan Katai! MN dr Zoran Budimac TI Flash i ActionScript LT Serbian (Latin) LT en/s CP FR Yugoslavia LP Vojvodina PY 2002 PU Authors reprint PP Novi Sad, Trg D. Obradovi!a 4 PD (5/ 54/ 0/ 2/ $5/ 2/ 0) SF Computer Science SD Internet technologies SKW Flash, ActionScript, Word Wide Web, Internet, UC vector graphics, animation, interactivity, scripting Holding data HD Note N Abstract AB Vector graphics and animation of Flash and ActionScript language with its versitality enables solving of wide spectre web based problems. From creation of navigation inside HTML pages, animated banners, to comlete web presentations in Flash and direct data exchange with web server. Accepted on Scientific AS May 2002 board on Defended DE June 2002 Thesis Defend board DB President dr Mirjana Ivanovi!, full professor, Faculty of Natural Sciences and Mathematics, Novi Sad Member dr Milo Rackovi!, associate professor, Faculty of Natural Sciences and Mathematics, Novi Sad Member dr Zoran Budimac, associate professor, Faculty of Natural Sciences and Mathematics, Novi Sad
54
D De ej ja an n K Ka at ta a i i! !