web tehnologije 1 - actionscript -...
TRANSCRIPT
USTANOVA: Umjetnička akademija u Splitu
ODSJEK: Dizajn vizualnih komunikacija
KOLEGIJ: Web tehnologije 1
GODINA / SEMESTAR: II / III
ACTIONSCRIPT
MENTOR: STUDENT: prof. Ivica Mitrović, mr. sc. Luka Vidoš
Split, 2. prosinca 2006.
Sadržaj: 1. Uvod u programiranje ..........................................................................................................................3 1.1. Program, programiranje, programski jezik ................................................................................3
1.2. Varijabla....................................................................................................................................3
1.3. Funkcije ....................................................................................................................................4
1.4. Klase i objekti............................................................................................................................4
2. Uvod u ActionScript .............................................................................................................................6 2.1. Što je to ActionScript.................................................................................................................6
2.2. Verzije ActionScripta.................................................................................................................7
2.3. Ključne riječi i gramatička pravila ..............................................................................................7
2.4. ActionScript panela ...................................................................................................................8
3. Upotreba ActionScripta........................................................................................................................9 3.1. Pridruživanje akcija objektima...................................................................................................9
3.2. Pridruživanje akcija gumbima ...................................................................................................9
3.3. Pridruživanje akcija Movie Clipovima........................................................................................10
3.4. Pridruživanje akcija ključnim kadrovima....................................................................................11
3.5. Script Assist ..............................................................................................................................12
3.6. Imenovanje ključnih kadrova.....................................................................................................13
3.7 Vrste akcija ................................................................................................................................14
4. Osnovni elementi ActionScripta .........................................................................................................16 4.1. ActionScript varijable ................................................................................................................16
4.1.1. Deklaracija varijable ....................................................................................................16
4.1.2. Pravila za imenovanja varijabli ....................................................................................17
4.1.3 Vrste varijabli u ActionScriptu i pridruživanje vrijednosti ..............................................18
4.1.4. Područje djelovanja varijable.......................................................................................19
4.1.5. Matematički operatori i varijable..................................................................................20
4.2. Actionscript funkcije ..................................................................................................................21
4.2.1. Ugrađene funkcije .......................................................................................................21
4.2.2. Vlastite funkcije ...........................................................................................................22
4.2.2.1. Definiranje funkcije ........................................................................................22
4.2.2.2. Pozivanje funkcije..........................................................................................22
4.3. Actionscript objekt.....................................................................................................................23
4.3.1. Točka sintaksa ............................................................................................................24
4.3.2. Metode objekta............................................................................................................25
4.3.3. Svojstva (properties) objekta.......................................................................................26
4.3.4. Ugrađeni objekti ..........................................................................................................27
5. Zaključak ...............................................................................................................................................30 6. Literatura ...............................................................................................................................................31
1. Uvod u programiranje
1.1. Program, programiranje, programski jezik
Programiranje je umjetnost i znanost na djelu. Potrebno je mnogo truda i vježbe da bi
se postalo programerom. Prvo što trebamo definirati jest što je to program. Program
je skup naredbi (kôd) koje izvršava računalo, naredbe stvaramo koristeći programski
jezik, a cijeli taj proces naziva se programiranje. Postoji više vrsta programskih jezika
od kojih su danas najzastupljeniji objektni jezici. Programski jezik se sastoji od
ključnih riječi i pravila pisanja naredbi u tom programskom jeziku (gramatika
programskog jezika). Ako bismo pokušali usporediti programski i ljudski jezik lako bi
smo zaključili da je mnogo lakše naučiti novi programski jezik nego ljudski. To je prije
svega zato što programski jezici imaju u pravilu vrlo mali skup riječi (30-ak) dok
ljudski imaju mnogo više, također gramatička pravila programskih jezika su jasno
definirana i ne ostavljaju prostora za slobodnu interpretaciju koju svakodnevno
susrećemo u ljudskim jezicima pa ih je stoga i mnogo lakše naučiti i zapamtiti. Osim
gramatike i ključnih riječi, programski jezik čine i posebne strukture pomoću kojih se
grade programi. Te strukture su varijable, funkcije, klase i objekti.
1.2. Varijabla
Varijabla je mjesto u memoriji računala koja nam omogućava privremeno
pohranjivanje podataka koji su nam potrebni tijekom izvođenja našeg programa.
Varijable imaju svoje ime i vrstu. Svaki programski jezik ima svoja gramatička pravila
za imenovanje varijabli.Vrsta varijable određuje tip podatka koji možemo pohraniti u
varijablu (tekst, broj, datum, logičke vrijednosti istina/laž, objekti,...). Varijabla se u
programu stvara deklaracijom u kojoj se definira ime i vrsta varijable. Nakon toga
varijabli možemo pridružiti vrijednost i/ili dobavljati vrijednost koja je u njoj
pohranjena.
Ime="Ivan"
BrojGodina=40
U gore navedenim primjerima Ime i BrojGodina su imena varijabli, a „Ivan" i 40
njihove vrijednosti spremljene ne njihovim memorijskim lokacijama. Valja ukazati i na
razliku između tipova podataka: tekst (kao vrijednost varijable) je u navodnicima, broj
nije.
Osim imena i vrste varijable imaju još jedno svojstvo, a to je područje djelovanja
(scope), a to znači da nisu sve varijable uvijek i svugdje dostupne unutar našeg
programa već da imaju određeno područje djelovanja. Područje djelovanja može biti
lokalno ili globalno.
Dobar primjer varijable u svakodnevnom životu je naš bankovni račun, on ima naziv
(broj tekućeg računa, npr. 110112345678), zatim ima vrstu podatka koja se u nju
sprema (iznos novca u određenoj valuti) te ima područje djelovanja tj. naš račun nije
dostupan svakome već samo nama i službenicima banke, i to samo onima koji imaju
ovlaštenje za to.
1.3. Funkcije
Funkcija je niz naredbi koje čine jednu funkcionalnu cjelinu. Postoje funkcije koje su
već napisane i dostupne su nam u bibliotekama funkcija koje većina programskih
jezika danas ima, a osim njih možemo stvarati i vlastite funkcije. Funkcije nam
omogućavaju da niz naredbi koji se često ponavlja unutar našeg programa stavimo
unutar jedne cjeline i koristimo po potrebi. Npr. ako unutar našeg programa imamo
potrebu za izračunavanjem kvadrata nekog broja, onda je puno bolja opcija da kôd
koji izvršava tu matematičku operaciju pohranimo u jednu funkciju koju onda po
potrebi pozivamo, nego da nam se taj kôd ponavlja unutar programa na više različitih
mjesta. Time se dobiva manji i efikasniji program. Funkcije se sastoje od imena te
liste parametara koje ta funkcija prima.Također, kao i kod varijabli, svaki programski
jezik ima svoja pravila za imenovanje funkcija. Lista parametara može biti i prazna.
Nakon što je funkcija pozvana, ona izvrši sve naredbe koje su u njoj napisane i kao
rezultat tih operacija može (ali i ne mora) vratit neku vrijednost kôdu koji je tu funkciju
i pozvao. Tako npr. ako imamo funkciju za izračun kvadrata nekog prirodnog broja,
ona kao parametar prima taj broj, a kao rezultat vraća vrijednost koja je kvadrat tog
broja (parametra).
1.4. Klase i objekti
U velikim, složenim programima često puta programiranje postaje naporan i
dugotrajan proces. Tome možemo donekle doskočiti ako program razdvojimo u
logičke, po mogućnosti nezavisne, cjeline. Svaka takva cjelina bila bi jedan objekt.
Nakon završetka izrade jednog objekta, programeru je bitno znati što taj objekt može
napraviti, koja su njegova svojstva, ali ne i na koji način objekt ta svojstva pohranjuje
ili na koji način obavlja svoje funkcije. Unutarnja struktura završenog objekta, koja
može biti vrlo složena, postaje nebitna i time se pojednostavljuje proces
programiranja velikih, složenih programa.
Klase i objekti danas čine osnovni koncept većine modernih programskih jezika. Za
klasu bi se moglo kazati da je samostalni program unutar programa, ona se sastoji
od niza varijabli (kod klasa se one nazivaju svojstva (properties)), te funkcija
(kod klasa se one zovu metode). Klase su nastale kao logičan koncept u želji da se
podaci i funkcije nad nekim određenim pojmom povežu u jednu cjelinu. Npr. ako
želimo programski modelirati automobil, najbolje je to napraviti upravo pomoću klasa.
U toj našoj klasi bi se mogle nalaziti varijable kao što su boja automobila, vrsta
automobila, brzina automobila, količina goriva u spremniku... Metode koje bismo
mogli imati u toj klasi bi mogle biti one koje nam vraćaju ili postavljaju vrijednosti za
upravo spomenute varijable. Što dobivamo koristeći koncept klase? Dobivamo to da
su nam svi podaci (funkcije i varijable) koje su nam potrebne za programsko
modeliranje određenog pojma ili situacije na jednom mjestu i onda nam je mnogo
lakše pisati takav kôd, koji je u tom slučaju vrlo čitljiv, što je važno kod velikih
programa te ga je lako nadograđivati i koristiti u različitim projektima. Klasa je
zapravo samo nacrt nekog tipa podatka dok sa stvarnim vrijednostima radimo preko
objekata. Dobar primjer za bolje razumijevanje klasa-objekt koncepta jest simbol-
instanca koncept. Simbol bi bio klasa, dok je njegova instanca na sceni objekt.
Sada ove osnovne koncepte današnjih programskih jezika možemo upoznati kroz
programski jezik Flasha, ActionScript.
2. Uvod u ActionScript
2.1. Što je to ActionScript
Slika 1: Flash layout
ActionScript je programski jezik pomoću kojeg možemo dodatno obogatiti naše Flash
projekte - složenim animacijama, interakcijom, optimizacijom, podacima iz baze
podataka i sl. On je, kao i većina današnjih modernih programskih jezika, objektno
orijentiran, što znači da možemo iskoristiti sve prednosti takvog načina
programiranja. Okolina unutar koje se izvršava ActionScript kôd je Flash Player, a u
programerskoj terminologiji postupak pretvaranja .fla datoteke u .swf datoteku naziva
se kompajliranje.
2.2. Verzije ActionScripta
Danas postoje dvije verzije ActionScripta, verzija 1.0, verzija 2.0 koja je dostupna od
verzije MX 2004 te verzija 3.0 koja postoji od verzije Adobe Flash Player 9.0. Osim
novih funkcionalnosti u verziji 2.0, imamo i jedan nedostatak, a to je nepotpuna
kompatibilnost programskog kôda napisanog u verziji 1.0 i onog napisanog u verziji
2.0. To znači da postoji mogućnost pogrešnog izvođenja programa u novom Flash
playeru napisanog u ActionScriptu verzije 1.0. ActionScript 3.0 je znatno brži prilikom
kompajliranja, vrlo mu je važan rad s klasama, i uveo je dosta novina.
2.3. Ključne riječi i gramatička pravila
Svaki programski jezik pa tako i ActionScript ima svoj skup ključnih riječi pomoću
kojih se stvaraju naredbe u tom programskom jeziku.
Ključne riječi ActionScripta navedene su u slijedećoj tablici:
add and break case
catch class continue default
delete do dynamic else
eq extends FALSE finally
for function ge get
gt if ifFrameLoaded implements
import in instanceof interface
intrinsic le it ne
new not null on
onClipEvent or private public
return set static super
switch tellTarget this throw
try typeof var void
while with
To su riječi sa određenom namjenom i njihovi nazivi su rezervirani a to znači da ne
smijemo niti jednom elementu (varijabli, funkciji, objektu) našeg programa dati naziv
koji odgovara nekoj ključnoj riječi.
Ovdje trebamo napomenuti i neka gramatička pravila, a prvo je da je ActionScript 2.0
case-sensitive programski jezik tj. razlikuje velika i mala slova.To znači da
ključnu riječ ne možemo napisati VaR nego samo var, kao i to da se varijable sa
nazivom mojaVarijabla i MojaVarijabla razlikuju. Drugo važno gramatičko
pravilo jest da naredbe u ActionScriptu trebamo terminirati koristeći kao terminator
točku-zarez (;). To znači da nakon svake linije programa u ActionScriptu trebamo
staviti ;.
ActionScript ne zahtjeva strogu upotrebu terminatora ali se preporuča njegova
upotreba jer u suprotnome može doći do pogrešaka u kôdu koje je ponekad teško
locirati.
2.4. ActionScript panela
Slika 2: Actions panel
Panel s akcijama (Actions panel) omogućava pregled, pisanje i pridruživanje
akcija na elemente Flash projekta. Panel aktiviramo na tri načina:
• Window → Actions
• tipkom F9
• desnom tipkom miša na objekt pa iz izbornika odaberemo Actions
Actions toolbox sadrži popis svih dostupnih akcija.
Script Navigator hijerarhijski prikazuje elemente (kadrovi, movie clip simboli, gumbi)
Flash projekta i to samo one koji imaju pridruženu neku akciju.
3. Upotreba ActionScripta
3.1. Pridruživanje akcija objektima
Akciju/akcije možemo pridružiti:
• Gumbima
• Kadrovima
• Movie Clip-ovima (ili na neki kadar unutar Movie Clipa)
Akcije mogu biti jednostavne, kao npr. naredba animaciji da prestane sa izvođenjem
(stop) ili to pak može biti cijeli skup akcija kao što je ispitivanje određenog stanja te
u skladu s njim izvođenje određenih akcija. Mnoge akcije zahtijevaju vrlo malo
programerskog iskustva, dok druge pak zahtijevaju dobro poznavanje programskih
jezika i namijenjene su naprednom programiranju. Za sve objekte vrijedi isto pravilo:
obavezno Selection tool alatom označimo željeni objekt, otvorimo prozor s akcijama
te odaberemo akciju koju želimo pridružiti označenom objektu. Kad izaberemo
željenu akciju, u prozoru pored pojavljuje se ispisana željena akcija zajedno sa
znakovima koji osiguravaju zadovoljavanje sintakse jezika. U svakom trenutku
možemo pogledati koja se akcija nalazi na nekom objektu jednostavnim otvaranjem
Actions prozora i označavanjem objekta. Akcije ne moramo odabirati iz popisa
ActionScript elemenata već ih možemo sami upisivati u okvir za upisivanje skripta ali
pri tom moramo biti oprezni da poštujemo sintaksu (pravila) pisanja ActionScript
jezika.
3.2. Pridruživanje akcija gumbima
Akcije koje najčešće pridružujemo gumbima su tzv. event (događaj) akcije, odnosno
akcije kojima neki određeni događaj nad gumbom služi kao otponac za reakciju i
izvršavanje ActionScript naredbi pridruženih gumbu. To zapravo znači da gumb
objekt ima već predefinirane evente na koje može reagirati, a na nama je da
odaberemo event koji nama treba te pomoću ActionScript jezika implementiramo
odgovarajuću akciju našeg gumba.
Događaji na koje gumb može reagirati su:
• PRESS - kad se pritisne tipka miša
• RELEASE - kad se otpusti tipka miša
• RELEASE OUTSIDE - kad se otpusti tipka miša izvan područja gumba
• KEY PRESS - kad se pritisne određena tipka na tipkovnici
• ROLL OVER - kad pokazivač uđe unutar hit područja gumba
• ROLL OUT - kada pokazivač izađe izvan hit područja gumba
• DRAG OVER - kad držimo pritisnutu tipku miša nad gumbom, izađemo izvan
područja gumba te se ponovno na njega vratimo
• DRAG OUT - kad držimo pritisnutu tipku miša nad gumbu i izađemo izvan
područja gumba
Precizan opis procedure pridruživanja akcije gumbu: prvo u ActionScript Toolboxu
odaberemo Movie Clip Control grupu akcija, zatim u njoj dvostrukim klikom miša
odaberemo akciju on te iz padajućeg izbornika odaberemo odgovarajući event koji se
zatim automatski upisuje u par zagrada koji slijede iza ključne riječi on te nama
preostaje upisati naš kôd između para vitičastih zagrada (blok naredbi). Na sljedećoj
slici vidimo gore opisani postupak u kojem smo za naš gumb objekt odabrali da
reagira na release event te smo upisali naš kôd, u ovom slučaju je to
gotoAndPlay(3); funkcija sa argumentom 3.
Slika 3: Dodavanje on akcije
3.3. Pridruživanje akcija Movie Clipovima
Kod Movie Clip simbola način postavljanja akcija sličan je postavljanju akcija na
gumb. Jedina je razlika što umjesto akcije on (događaj) postavljamo akciju
onClipEvent (događaj) koja isto određuje neke događaje koji se trebaju dogoditi da
se izvrše naredbe unutar vitičastih zagrada (blok naredbi). Na Movie Clipove, za
razliku od običnih grafičkih simbola, u mogućnosti smo stavljati akcije, ne samo na
instancu Movie Clipa koja je na sceni, već i na pojedine kadrove unutar vremenske
linije Movie Clipa.
Događaji na koje može reagirati Movie Clip objektu su:
• LOAD - kad se Movie Clip učita u animaciju
• ENTERFRAME - izvođenje akcije brzinom izmjene kadrova (framerate).
• UNLOAD - kad se Movie Clip ukloni iz animacije
• MOUSE DOWN - pritisak na lijevu tipku miša
• MOUSE UP - otpuštanje lijeve tipke miša
• MOUSE MOVE - pomak miša
• KEYDOWN - pritisak tipke na tipkovnici
• KEYUP - otpuštanje tipke na tipkovnici
• DATA - detektiranje ulaska podataka u obliku varijabli
Procedura pridruživanja akcije Movie Clipu je potpuno identična proceduri
pridruživanja akcije gumbu uz razliku da ne odabiremo akciju on već onClipEvent
pa je stoga ovdje nećemo navoditi.
3.4. Pridruživanje akcija ključnim kadrovima
Akcije možemo stavljati samo na ključne kadrove! Da smo postavili akciju na kadar
vidimo po malom slovu "a" koje se pojavljuje iznad kadra u vremenskoj liniji.
Slika 4: Postavljanje akcije na ključni kadar
Izvođenje pridruženih akcija izvodi se u trenutku kad playhead dosegne kadar s
akcijom. Potpuno je svejedno na kojem sloju se nalazi ključni kadar s akcijom pa se
zato radi bolje kontrole sve akcije mogu stavljati na zasebni sloj.
Slika 5: Postavljanje akcije na ključni kadar u zasebnom sloju
Primjer postavljanja akcija na kadar: Prilikom animiranja objekata na sceni njihova animacija se beskonačno ponavlja.
Recimo da smo animirali pojavu logotipa "UMAS" na zaslonu. Logotip se pojavljuje,
pozicionira na zaslonu i staje. Bez znanja o akcijama, ne bismo mogli zaustaviti našu
animaciju i logotip bi se nanovo animirao i pojavljivao. Akcija koja nam je za to
potrebna naziva se stop. Osim te akcije postoji i mnoštvo drugih s kojima možemo
upravljati izvođenjem animacija u Flashu.
Tako možemo npr. kod animacije lopte poželjeti zaustaviti neprestano ponavljanje
animacije. Ono što treba napraviti jest dodati novi sloj (Insert → Timeline → Layer)
na kojem ćemo u zadnjem kadru smjestiti ključni kadar. Da bismo dodali akciju u
ključni kadar dovoljno je dvostruko kliknuti na njega. Otvara se Actions panel s
popisom svih akcija koje možemo pridružiti. Odabirom željene akcije iz popisa akcija
unutar Actions panela možemo staviti akciju u ključni kadar. Nas zanima akcija stop
koja se nalazi unutar Timeline grupe koja se nalazi u Global Functions grupi.
Dvostrukim klikom miša odaberemo akciju stop i ona je smještena u naš ključni
kadar na novo dodanom sloju. Kad pokrenemo animaciju lopte CTRL + ENTER vidjet
ćemo da animacija staje kad dosegne posljednji kadar. Nije pravilo da se akcije
zadaju u posebnom sloju, one se mogu zadati i u sloju animiranog objekta.
3.5. Script Assist
Opcija Script Assist namijenjena je da bi nam pomogla pri formatiranju akcija (kôda),
točnije, da bi se izbjegle greške u sintaksi i logici pri pisanju koda koje mogu biti vrlo
česte u početku korištenja ActionScripta.
U svakom slučaju, da bi se koristili opcijom Script Assist moramo biti upoznati sa
ActionScriptom, tj. moramo poznavati metode, akcije, varijable i sl.
Da bi se prebacili u Script Assist način rada potrebno je u Actions Paneli odabrati
gumb Script Assist.
Slika 6: Script assist
Kada označimo određenu akciju u Actions Toolboxu pored kursora miša pojavit će se
opis označene akcije. Dvostrukim klikom na akciju u Actions Toolboxu ili povlačenjem
iste u okvir za pisanje skripte, željenu akciju pridružujemo objektu na sceni (gumbu ili
Movie Clipu) ili određenom ključnom kadru.
3.6. Imenovanje ključnih kadrova
Kad radimo samo s brojčanim oznakama kadrova, to brzo može postati konfuzno i
nespretno jer bilo koja promjena u početnoj ili krajnjoj točki određene animacije, ili
grupi animiranih slojeva mijenja brojeve koji su dodijeljeni pojedinim kadrovima, zato
nam Flash nudi opciju imenovanja pojedinih kadrova radi lakšeg snalaženja.
Postupak imenovanja nekog kadra jest klik mišem na njega, pa u Properties prozoru
u okvir za unos Frame upisujemo ime kadra (FrameLabel). U vremenskoj liniji taj će
kadar biti označen zastavicom pokraj koje će stajati ime tog kadra.
Sada možemo s akcijama koje referiraju na pojedini kadar (gotoAndStop) referirati
pomoću imena, a ne broja.
Slika 7: Imenovanje ključnih kadrova
3.7 Vrste akcija
Vidjeli smo neke osnovne akcije ActionScripta, a sad je vrijeme da se upoznamo sa
svim vrstama akcija koje se nalaze grupirane unutar Actions panela. Flash dijeli
akcije u 13 grupa pa ćemo ih sada malo detaljnije opisati:
Slika 8: Grupe akcija
• GLOBAL FUNCTIONS
Sadrži najčešće korištene akcije poredane u funkcijskim podgrupama
(Timeline control, Movie Clip control i si.) - Jedne od korisnijih akcija su
gotoAndPlay, gotoAndStop, stop, on, onClipEvent te getURL. Akcije
unutar ove grupe su osnovne akcije i često se koriste u Flashu jer su temelj
bilo kakve interaktivnosti i upravljanja animacijom.
• GLOBAL PROPERTIES
Sadrži globalne postavke koje vrijede za cijeli Flash projekt a možemo ih
podesiti koristeći opcije unutar ove funkcijske skupine.
• OPERATORS
Sadrži simbole i izraze kojima transformiramo varijable i/ili uspoređujemo
vrijednosti. Uključuje i osnovne matematičke operatore (+,-,*,<,>, itd.) te
logičke operatore (I,ILI,NE).
• STATEMENTS
Ovdje se nalaze sve funkcije vezane uz klase (class), objekte, varijable,
korisničko-definirane funkcije, kondicionalne naredbe (if, then, else),
petlje (loops) i sl.
• ACTION SCRIPT 2.0 CLASSES
Predefinirane klase dostupne u ActionScriptu.
• COMPILER DIRECTIVES
Dodatne direktive za kompajler. Npr. naredba #include kojom naređujemo
kompajleru da uključi specificiranu skript datoteku pri procesu kompajliranja.
• CONSTANTS
Globalne konstante za korištenje u izrazima.
• TYPES
Popis svih tipova podataka koji se mogu koristiti u pisanju ActionScript
naredbi.
• DEPRECATED
Naredbe koje bi se radi pojave novih i funkcionalnijih trebale izbjegavati.
• DATA COMPONENTS
Sadrži popis akcija za korištenje pri manipulaciji podacima (npr. podacima iz
baze podataka).
• COMPONENTS
Sadrži popis akcija za upotrebu nad svim Flash komponentama
• SCREENS
Sadrži popis akcija za upotrebu pri izradi Screen-ova.
• COLOR PICKER
Popis naredbi za rad sa bojama.
• INDEX
Abecedni popis svih ActionScript naredbi.
4. Osnovni elementi ActionScripta
4.1. ActionScript varijable
Već je u uvodu spomenuto što su to općenito varijable u programskim jezicima, a
sada ćemo upoznati tipove varijabli i naučiti ih upotrebljavati u ActionScriptu. U
ActionScriptu postoje tri osnovna tipa varijabli:
• tekstualne (String)
• numeričke (Number)
• logičke (Boolean)
4.1.1. Deklaracija varijable
Varijabla se u ActionScriptu deklarira kombinacijom ključne riječi var, zatim nazivom
varijable, te tipom varijable. Naziv i tip se odvajaju dvotočkom (to je gramatičko
pravilo ActionScripta).
Upotreba ključne riječi var i tipa varijable prilikom deklaracije nije obavezna, ali je
preporučljiva zbog sprječavanja eventualnih pogrešaka pri programiranju. Jednako
tako, ukoliko prilikom deklariranja varijable navedemo tip varijable, Actions Panel
nam „pomaže" pri pridruživanju metoda varijabli.
Slika 9: Pomoć prilikom pridruživanja metoda varijabli
Primjer: Deklarirajmo varijablu naziva broj i numeričkog tipa var broj:Number;
U ovom primjeru možemo vidjeti sljedeće:
• upotrebu ključne riječi (var)
• imenovanje varijable (broj)
• određivanje tipa varijable (Number)
• terminiranje naredbe (;)
4.1.2. Pravila za imenovanja varijabli
U ActionScriptu postoje određena pravila za imenovanje varijabli kojih se moramo
pridržavati, a to su:
• u nazivu varijable možemo koristiti samo mala i velika slova engleske
abecede, brojeve, donju crtu _ te znak $
• na prvo mjesto u nazivu varijable ne smije biti broj
• kao naziv varijable ne smijemo koristiti neku od ključnih riječi
• nikako u imenu varijable ne koristiti razmake i dijakritičke znakove čćžšđ
Dodatna napomena je da ActionScript 2.0 razlikuje mala i velika slova pa su var x:Number;
i var X:Number;
dvije različite varijable.
var prezime:String;
prezime="Horvat";
trace (Prezime);
Navedeni primjer rezultirat će pogreškom jer naredba trace pokušava koristiti
varijablu Prezime koja uopće nije definirana, tj. nije poznat njen tip niti sadrži neku
vrijednost. Ispravan kôd izgledao bi ovako:
var prezime:String;
prezime="Horvat";
trace (prezime);
4.1.3 Vrste varijabli u ActionScriptu i pridruživanje vrijednosti
U ActionScriptu imamo više vrsta varijabli, a najčešće se koriste numerički (Number),
tekstualni (String) te logički (Boolean).
Vrijednosti varijablama (nakon što su deklarirane) pridružujemo upotrebom operatora
(=).
Primjer deklaracije i pridruživanja vrijednosti varijabli: var broj:Number;
broj=5;
U ovom primjeru možemo vidjeti sljedeće:
• deklaraciju varijable ključnom riječi var
• imenovanje varijable (broj)
• određivanje tipa varijable (Number)
• pridruživanje vrijednosti varijabli (broj=5)
Primijetite da smo ključnu riječ var koristili samo kod deklaracije varijable.
Kada se jednom odredi vrsta varijable njoj se od tog trenutka može samo pridruživati
vrijednosti tog tipa, ako pokušamo pridružiti varijabli vrijednost nekog drugog tipa
(tekst, logički) Flash će prijaviti grešku i naš program se neće kompajlirati.
Primjer deklariranja tekstualne varijable: var mojTekst:String;
mojTekst="Macromedia Flash";
U ovom primjeru deklarirali smo tekstualnu varijablu (vrsta String), a kao vrijednost
smo joj pridružili tekst „Macromedia Flash". Vrijednosti se tekstualnim varijablama
uvijek pridružuju unutar navodnika. Navodnici mogu biti jednostruki (") ili dvostruki
(""), no moramo biti dosljedni pri njihovoj primjeni.
var mojTekst:String;
mojTekst='Macromedia Flash";
Gore navedeni primjer prikazuje pogrešno korištenje navodnika pri pridruživanju
vrijednosti varijabli.
Vrijednost varijable uvijek mora biti unutar istog tipa navodnika, jednostrukih ili
dvostrukih.
var mojTekst:String;
mojTekst='Macromedia Flash';
var mojTekst:String;
mojTekst="Macromedia Flash";
Primjer deklariranja logičke varijable: var logika:Boolean;
logika=true;
U ovom primjeru deklarirali smo logičku varijablu (vrsta Boolean) a kao vrijednost
smo joj pridružili true (istina). Logička varijabla može osim true imati još samo
jednu vrijednost a to je false (laž).
Primjer neispravnog rada sa varijablama: var godina:Number;
godina="1990";
Ovaj primjer generirat će pogrešku pri izvršavanju programa zato što smo varijablu
deklarirali kao numerički tip, a pridružili smo joj tekstualnu vrijednost.
4.1.4. Područje djelovanja varijable
Postoje tri područja djelovanja varijabli: Globalno, Lokalno i Timeline područje. Ako
deklariramo globalnu varijablu ona će vrijediti za cijelu animaciju, odnosno bit će
"vidljiva" svim vremenskim linijama. Lokalne varijable vrijede i postoje samo unutar
pojedinih funkcija, dok su Timeline varijable dostupne svim skriptama koje "žive" na
tom istom Timeline-u (Timeline = Vremenska linija).
Globalne varijable se deklariraju ključnom riječi _global.
4.1.5. Matematički operatori i varijable
U svakom programskom jeziku pa tako i u ActionScriptu imamo matematičke
operatore. U ActionScriptu oni su:
• operator zbrajanja +
• operator oduzimanja -
• operator množenja *
• operator dijeljenja /
• operator cjelobrojnog dijeljenja %
Do sada smo vidjeli kako varijabli možemo pridružiti konstantu kao vrijednost
(broj=5), a nakon što smo se upoznali sa matematičkim operatorima u
ActionScriptu možemo vidjeti i drugi način pridruživanja vrijednosti varijablama.
Primjer: var x:Number;
var y:Number;
x=50;
y=x*2 + 1;
Nakon što se izvrši ovaj kod, vrijednost koja je pohranjena u varijabli y je 101.
U prethodnom primjeru vidjeli smo kako vrijednosti varijablama možemo pridružiti i
pomoću matematičkih izraza, ActionScript izvršitelj prvo napravi proračun
matematičkog izraza koji se nalazi na desnoj strani znaka jednakosti te zatim rezultat
te matematičke operacije pohrani u varijablu y.
Pogledajmo i primjer sa operacijama nad varijablama tekstualnog tipa: var mojTekst1:String;
var mojTekst2:String;
var zbrojTeksta:String;
mojTekst1="Macromedia";
mojTekst2="Flash";
zbrojTeksta=mojTekst1+mojTekst2;
Nakon što se izvrši gore navedeni kôd vrijednost koja je pohranjena u varijabli
mojTekst2 jest "MacromediaFlash".
Ovaj postupak "zbrajanja" tj. spajanja stringova se naziva konkatenacija.
Kako bismo mogli postići da nam u gornjem primjeru između dviju riječi bude jedan
razmak? Pogledajmo sljedeći primjer: var mojTekst1:String;
var mojTekst2:String;
var zbrojTeksta:String;
mojTekst1="Macromedia";
mojTekst2="Flash";
zbrojTeksta=mojTekst1+" "+mojTekst2;
U ovom primjeru vidimo da se vrlo lako može postići spajanje više tekstualnih
podataka pa smo tako mi spojili vrijednost varijable mojTekst1, zatim jedna
praznina te na kraju vrijednost varijable mojTekst2. Nakon izvršenja koda u varijabli
zbrojTeksta pohranjena je vrijednost "Macromedia Flash".
4.2. Actionscript funkcije
U Actionscriptu postoje dvije vrste funkcija, ugrađene funkcije (buit in functions) te
korisnički definirane tj. one funkcije koje sami napišemo.
4.2.1. Ugrađene funkcije
U sam Flash je Macromedia ugradila mnoge gotove funkcije koje su nam na
raspolaganju, a jedino što trebamo znati je kako ih upotrebljavati. Svaka ugrađena
funkcija ima svoje ime, listu eventualnih parametara te opis što ta funkcija radi.
Primjer: getURL("http://www.umas.hr", "_blank");
U ovom primjeru pozivamo ugrađenu funkciju getURL te joj prosljeđujemo dva
parametra, prvi je adresa (putanja), a drugi je Browser Window model, odnosno
određujemo kako će se pozvana web stranica učitavati u internet pretraživaču. Kako
su oba parametra tekstualnog tipa, obavezno ih pišemo unutar navodnika, a
odvajamo ih zarezom. Na kraju naredbe, naravno, nalazi se terminator (;).
Kako znati koje su sve funkcije ugrađene u ActionScriptu, koje parametre zahtijevaju
te što je njihova namjena?
Odgovor je jednostavan, upotrebom sustava pomoći (Help) koji je ugrađen u Flash a
dostupan je pritiskom na tipku F1.
4.2.2. Vlastite funkcije
Vlastite funkcije su one koje sami napišemo u ActionScriptu koristeći pravila pisanja
funkcija, a ona su:
• funkcija se definira ključnom riječi function
• nakon toga se napiše njezin naziv a pravila nazivanja su ista kao i kod varijabli
• nakon naziva obavezno ide par zagrada u kojima se određuju eventualni
parametri koje funkcija prima
• nakon toga ide par vitičastih zagrada { } unutar kojih se pišu naredbe funkcije.
To su naredbe koje se sve izvrše u onom trenutku kad se funkcija pozove
4.2.2.1. Definiranje funkcije
Definirat ćemo vlastitu funkciju za zbroj dva cijela broja. function zbroji (var x:Number, var y:Number) {
return x+y;
}
U ovom primjeru vidimo definiranje funkcije naziva zbroji koja prima dva parametra
x,y numeričkog tipa, a unutar tijela funkcije (područje između vitičastih zagrada)
imamo samo jednu naredbu, a ta je return x+y; koja zbroji vrijednosti varijabli x i
y te ih vrati onome tko je funkciju i pozvao. Povrat vrijednosti se postiže ključnom
riječi return.
4.2.2.2. Pozivanje funkcije
U sljedećem primjeru vidjet ćemo kako upravo definiranu funkciju zbroji možemo
pozvati da nam izračuna zbroj dva broja te da nam vrati tu vrijednost. var a:Number;
var b:Number;
var zbroj:Number;
a=5;
b=6;
zbroj=zbroji(a,b);
Analizirajmo napisani kod.
Prvih pet naredbi nam je već poznato što rade, prve tri su deklaracija numeričkih
varijabli, a sljedeće dvije naredbe pridružuju konstante kao vrijednosti varijablama a i
b. Ono što je novo jest pridruživanje vrijednosti varijabli zbroj, a to smo postigli
pozivanjem funkcije zbroji, kojoj smo kao parametre proslijedili varijable a i b, a ona
nam je kao rezultat vratila zbroj te je 11 kao rezultat pohranjen u varijablu zbroj.
Funkciji se kao parametri mogu proslijediti varijable, ali i matematički izrazi te
konstante. U prethodnom primjeru isti bismo rezultat dobili da smo posljednju
naredbu napisali ovako:
zbroj=zbroji(5,6);
ili pak ovako: zbroj=zbroji(2+3,4+2);
4.3. Actionscript objekt
U srcu ActionScripta nalaze se klase i objekti. Klase su skupine podataka, kao što su
npr. zvuk, grafika, tekst ili brojčane vrijednosti koje stvaramo u Flashu da bi
kontrolirali neku animaciju. Npr. klasa Date upotrebljava se za dohvaćanje
informacija o vremenu i datumu. Array klasa koristi se za manipulaciju podacima
koji su pohranjeni u određenom redoslijedu, itd. Flash nudi određeni broj već
unaprijed definiranih klasa koje možemo koristiti u ActionScriptu. Isto tako imamo
slobodu kreiranja svojih vlastitih klasa. Da bismo koristili određenu klasu moramo od
nje stvoriti instancu. Instanca objekta je ono što koristimo u programskim linijama
ActionScripta - objekt. Puni smisao ActionScript dobiva upravo upotrebom objekata
čime dobivamo potpunu programsku kontrolu nad sadržajima animacije.
Svaka od klasa zadužena je za neku vrstu podataka:
Color - boja
Date - vrijeme
MovieClip - kontrola Movie Clipova
Sound - zvuk
Math - matematički proračuni
Array - za podatke organizirane u niz
TextField - za rad s dinamičkim tekstom
...
Objekti sami po sebi ne čine ništa osim toga što su objekti. Da bi ti objekti nešto
korisno činili pridjeljujemo im različite metode (sposobnosti) i određena svojstva
(properties).
4.3.1. Točka sintaksa
Kao i sa ostalim stranim jezicima, tako i u ActionScriptu moramo naučiti gramatička
pravila da bi mogli spajati riječi. Sintaksa točke je način na koji ActionScript spaja
objekte, svojstva i metode u izjave. Spajamo objekte, svojstva i metode točkom da
bismo opisali pojedini objekt ili proces. Također koristimo sintaksu točke da bi
identificirali ciljani put do vremenske linije nekog Movie Clipa ili varijable. Izraz sa
sintaksom točke započinje imenom objekta ili Movie Clipa/varijable, slijedi točka, a
završavamo svojstvima ili metodom objekta ili varijablom koju želimo pozvati.
Primjeri:
_x svojstvom Movie Clipa određujemo x koordinatnu poziciju instance Movie Clipa
na sceni. Izraz upućuje na svojstvo _x Movie Clip instance po imenu loptaMC.
Recimo da želimo pomaknuti instancu Movie Clipa na udaljenost od 50px od lijevog
ruba ekrana, dakle mijenjamo vrijednost njegovog svojstva _x koje određuje njegovu
horizontalnu poziciju. To ćemo učinit sljedećom naredbom: loptaMC._x=50;
Izražavanje metode nekog objekta ili Movie Clipa slijedi isti uzorak. Na primjer,
metoda play instance Movie Clipa loptaMC tjera Movie Clip da započne s
izvođenjem. loptaMC.play();
Određivanje vrijednosti varijable provodi se tako da sintaksom točke dođemo do
područja određene varijable te znakom jednakosti odredimo njenu vrijednost. shopping.obrazac.pošalji=true;
Ovaj izraz pridjeljuje varijabli pošalji boolean vrijednost true. Varijabla se nalazi u
Movie Clipu obrazac koji se nalazi u Movie Clipu shopping. Sintaksom točke
dolazimo do njenog mjesta unutar hijerarhije Movie Clipova (vremenskih linija).
4.3.2. Metode objekta
Objekte u ActionScriptu možemo usporediti s objektima u stvarnom svijetu kao što je
npr. neka osoba. Josko je jedan objekt, Marija drugi itd. Objekt samo za sebe je
objekt. On ne čini ništa. Međutim, objekti imaju određene mogućnosti (sposobnosti)
koje možemo pozvati/aktivirati. Josko može trčati, Marija može pričati itd. Kad bi to
pokušali napisati ActionScript jezikom izgledalo bi ovako: Josko.trci();
Marija.pricaj();
Josko.hodaj();
Znači, objekti u ActionScriptu imaju određene mogućnosti (sposobnosti), ali tek kada
im ih dodijelimo! Te mogućnosti koje dajemo objektima nazivamo METODE, a one se
pridjeljuju objektu tako da ime metode spojimo točkom s imenom instance objekta: date.getYear()
- objekt date kojem smo dali sposobnost da sazna tekuću godinu.
sound.setVolume()
- objekt sound koji sada ima sposobnost upravljati glasnoćom zvuka.
movieclip.stop()
- objekt movieclip koji smo dali sposobnost da zaustavi animaciju.
Ovdje primjećujemo da svaka metoda nakon svog imena ima i zagrade. Unutar tih
zagrada možemo odrediti pojedine parametre koji će dati preciznije upute objektu
kako nešto treba činiti, npr: Josko.trci(brzo);
Marija.pricaj(glasno);
Josko.hodaj(sporo);
U ActionScriptu bi to izgledalo ovako: objekt.metoda(parametar)
Ovaj objekt ima sposobnost upravljanja glasnoćom zvuka i namješta glasnoću na
100.
Sljedeća metoda objekta movieCIip koristi se i kao zasebna akcija: movieclip.goToAndPlay("Scena 2", 6);
Objekt movieCIip koji ima mogućnost skakanja na određeni kadar. Pobliže smo
označili i gdje. To je scena 2, kadar broj 6.
4.3.3. Svojstva (properties) objekta
Svaki objekt ima svoja svojstva, ali su nama najpotrebnija svojstva movieClip
objekta koja se nalaze popisana u ActionScript 2.0 Classes → Movie → Movie Clip
→ Properties unutar Actions panela. Ovdje opet povlačimo sličnost s objektima iz
realnog svijeta:
Josko, Marija i Marko imaju određenu visinu, težinu, boju kose. Josko._visina=180;
Marija._težina=65;
Marko.boja kose="crna"
Isto je tako s postojećim objektima u ActionScriptu:
MovieClip._height - visina MovieCIip simbola
MovieClip._x - pozicija MC simbola
MovieClip._rotation - rotacija MC simbola
Značajna je stvar da svojstvima možemo dodjeljivati određene vrijednosti:
MovieClip._height=200; - određujemo da je visina MC simbola 200 px
MovieClip._x=125; - određujemo poziciju MC simbola na sceni
MovieCIip.rotation=20; - određujemo rotaciju MC simbola u stupnjevima
Da rezimiramo:
U Flashu postoji mnogo klasa koji nam stoje na raspolaganju za manipulaciju. Svaki
od objekata (instanca klasa) ima određena svojstva (properties) i metode kojima
objektu dajemo određenu sposobnost. Klasa koja se najčešće koristi je MovieCIip i
dobro je zapamtiti njena svojstva i metode.
MovieClip (odnosno njegova instanca na sceni) postaje objekt u onom trenutku kad
instancu imenujemo u okviru Instance Name okvira Properties.
Slika 10. Popis svih propertiesa za MovieClip klasu
4.3.4. Ugrađeni objekti
Ako želimo koristiti neku klasu u ActionScriptu, ne možemo samo navesti njezino ime
(sound, date i slično) te joj pridjeljivati metode i svojstva već od svake klase
moramo načiniti njezinu instancu i imenovati je u Properties panelu. Tek tada tu klasu
možemo koristiti u obliku instance. Samo imenovanoj instanci možemo pridjeljivati
metode i svojstva. Ovdje možemo povući paralelu sa upotrebom biblioteke simbola.
Ukoliko neki simbol želimo koristiti na sceni, moramo iz biblioteke izvući njegovu
instancu na scenu i tek ga tada možemo koristiti. Mi u stvari ne koristimo sam simbol
već njegovu instancu (sliku, kopiju). Isto tako je i u ActionScriptu, ukoliko želimo
koristiti neku klasu, ne koristimo baš nju već moramo napraviti instancu te klase -
objekt.
U ActionScriptu postoji posebna funkcija kojom stvaramo instance nekog objekta. Ta
funkcija naziva se konstruktorska funkcija (constructor function) i bilježi se s new.
zvuk=new Sound();
boja=new Color();
Ovdje smo načinili jednu instancu (zvuk) klase Sound i jednu instancu (boja) klase
Color.
Primjer upotrebe ugrađenih objekata:
Želimo preko ActionScripta iz računala saznati i prikazati na sceni koja je tekuća
godina. ActionScript kôd unosimo na prvi ključni kadar kako bi se on izvršio odmah
na početku animacije. Pri radu sa datumima i vremenom koristimo skupinu podataka,
odnosno klasu koji se naziva Date i metodu te klase getFullYear() koja objektu
daje sposobnost dobivanja informacije o tekućoj godini. Već smo spomenuli da
ukoliko želimo koristiti neki klasu da moramo načiniti njegovu instancu. U ovom
primjeru instanca klase zvat će se vrijeme.
vrijeme=new Date();
Stvorili smo instancu klase po imenu vrijeme te joj sada možemo pridružiti metodu
koja će joj dati sposobnost da sazna tekuću godinu iz sistemskog sata. Ta metoda se
zove getFullYear();. Objekt će saznati tekuću godinu, međutim mora postojati
neko mjesto gdje će Flash pohraniti tu brojčanu vrijednost, a to je varijabla koju ćemo
nazvati godina. godina=vrijeme.getFullYear();
Brojčana vrijednost s tekućom godinom sada se nalazi u varijabli godina. Ukoliko
želimo prikazati tekuću godinu na sceni moramo na njoj načiniti jedno dinamičko
tekstualno polje jer upravo on ima sposobnost prikazati na sceni vrijednost neke
varijable ActionScripta. U Properties okviru kad je upaljen Text alat odabrati Dynamic
Text te pod Variable upisati ime varijable koja sadrži tekuću godinu, a to je godina.
5. Zaključak Ovo je bio samo mali dodir jednog, naizgled jednostavnog, programskog jezika. Kao i
kod drugih jezika važan je princip. Ako ste naučili programirati u jednog
programskom jeziku, lako je prebacivati se na druge. Samo je gramatika tog jezika
drugačija.
ActionScript je namijenjen da bi obogatio Flash i da bi uvelike povećao njegove
mogućnosti, ali i smanjili dimenzije kompajlirane .swf datoteke. Automatizacija brojnih
animacije, način rada, navigacija, sve je to upravljano upravo njime. Danas već
polako se putem ActionScripta rade brojne serverske i sigurnosne aplikacije.
Ukoliko se netko želi profesionalno baviti Flashom, poznavanje ActionScripta ne
smije izostati.
6. Literatura Internet http://en.wikipedia.org/wiki/Actionscript
http://www.actionscript.org/
http://www.actionscript.org/resources/categories/Tutorials/
http://www.adobe.com/support/flash/action_scripts/actionscript_dictionary/
http://actionscriptcheatsheet.com/blog/
Video Lynda.com - Macromedia Flash MX 2004 ActionScript 2