Zagreb, Unska 3
Zavod za elektroničke sustave
i obradu informacija
Dario Plichta 0036375659
Protok podataka
je razlog zašto medijske mogućnosti prezentacije na Internetu nisu na nivou
onih koje se skladište na CD-u. Dok CD može slobodno sadržavati kompleksne
programe i nekomprijesirane video i audio zapise, slike i velike količine
tekstualnih podataka, na web prijezentaciji , uz uvažavanje ograničenog
protoka, je “dozvoljeno” mnogo manje – toliko da posjetilac može primiti
informaciju koja mu se nudi u nekom, dovoljno kratkom, roku. Sa druge strane,
raznovrsnost sadržaja koji se može naći na globalnoj mreži postavlja zahtjev
autoru prezentacije da pružena informacija omogući korisniku da prati tok
informacija koji mu se nudi putem prezentacije. Korisnik Takođerr ima svoje
zahjteve: želi “što više – to bolje” u roku “što brže – to bolje”; a ukoliko mu
se po tom kriteriju ne izađe u susret, jednostavno će krenuti zadovoljavati
svoje potrebe na nekoj drugoj lokaciji, na nekoj drugoj prijezentaciji.
Problematika
kreiranja HTML prezentacije
Autor mora imati
na umu da sadržaj web stranice (osnovne cjeline u prijezentaciji) bude čitljiv
na očekivani način od strane web-pretraživača koji posjetilac koristi. Međutim,
ovo je osnovni kamen spoticanja pri kreiranju i dizajniranju stranice putem
klasičnog HTML pristupa jer sam prikaz stranice zavisi od mnogo faktora: koji
tip pretraživača se koristi i koja verzija na kom operativnom sistemu, da li su
fontovi koji se specificiraju na stranici instalirani na računalu posjetioca,
koju rezoluciju koristi posjetilac...
HTML –
standardizacija i konkurencija
Jezik HTML
prijedstavlja jezik za opis podataka za prikaz sadržaja stranica web
prezentacije. Cilj jezika je da omogući prijedstavljanje različitih sadržaja
posjetiocu prezentacije na način koji osmisli autor. Da bi se tome izašlo u
susret, 1994. osnovan je web konzorcijum (http://www.w3c.org/),
čiji zadatak je da se na svjetskom nivou brine o standardizaciji protokola,
jezika i tehnologija od značaja za razvoj svjetske mreže. Tako je, na Primjer,
jedan od njihovih dokumenata i specifikacija jezika HTML, zvanično u nazivu “prijeporuka” (umjesto specifikacija). Dokument sadrži opis
elemenata jezika i načine upotrebe.
Upoznavanjem sa
specifikacijom, autor bi trebalo biti u stanju da, prateći prijeporuku,
sprovede svoje ideje u projekt prezentacije i omogući na taj način da
posjetilac prezentacije može vidjeti stranice projekta koje izgledaju točno
onako kako je autor osmislio.
U praksi, čitače
HTML strana, koji su poznatiji pod nazivom web-pretraživači, proizvode
različite kompanije čiji cilj je, prije svega, osvajanje tržišta i, kao
posljedica toga, ostvarenje profita. Stoga kompanije nude tržištu verzije
programa koje zadovoljavaju one aspekte jezika, koje sama kompanija smatra
bitnim ili koje je uspela da realizira, istovrijemeno nudeći neka druga
rješenja čime se stiče prijednost u odnosu na konkurentske kompanije i njihove
programe.
Ovakva stvarnost
autoru prezentacije stvara samo probleme. Autor mora poznavati točno šta koja
verzija kog programa može pružiti, ukoliko i dalje želi osigurati posjetiocu
svoje prezentacije prezentiranje sadržaja na željeni način. Iako suvrijemeni programi
za kreiranje web prezentacija posjeduju određenu bazu znanja o ovoj
problematici, krajnji rezultat je: ili povećanje količine podataka za opis
sadržaja (zbog raznih ispitivanja o pretraživaču klijenta i kreiranja
različitih rješenja za isti prikaz), ili optimizacija sadržaja za pojedine
pretraživače (čime se oštećuju posjetioci koji koriste ostale), ili korištenje
najjednostavnijih elemenata jezika, podržanih od svih pretraživača (gubi se
atraktivnost naprijednih elemenata).
Dobra ilustracija
autorske muke je mogućnost korištenja klijentskih skript jezika u okviru HTML
stranica. Ovi jezici omogućavaju dodavanje različitih efektnih rješenja za
proširenje funkcionalnosti stranice kao, na Primjer, poboljšanje navigacijskog
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 promatrana verzija promatranog pretraživača.
Znači, programira se u JavaScriptu a “univerzalnost” se osigurava sljedeć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 uvjetnim granama. Umanjuje se
prijeglednost koda, povećava se veličina datoteke, produžava se vrijeme
učitavanja stranice, povećava se količina podataka koja klijentu nije od
koristi...
Bitmap grafika
Grafičke datoteke
– fotografije, crteži, navigacijske slike i drugo, na HTML stranici najšire su
prisutni u dva formata - .jpg i .gif. To nije slučajno, jer najbolje odgovaraju
zahtjevu da pruže što više informacija u što manjoj datoteci. Stranica je
učitana tek onda kada su učitani svi njeni elementi. Znači da ukupna količina
podataka, koja treba stići do klijenta da bi pretraživač mogao ispravno
prikazati stranicu, nije manja od zbira veličina datoteka svih elemenata
stranice. Također, svaki element putuje po posebnom zahtjevu, što uvjetuje
određena kašnjenja u komunikaciji klijenta i servera i produžava vrijeme
učitavanja. Keširanje elemenata koji se ponavljaju na različitim stranicama je
od pomoći, ali ne i pri prvom pristupu prijezentaciji (prva stranica je
najbitnija u odluci posjetioca hoće li ostati ili odustati od posjete).
Animacija
Klasični video
formati neprimenljivi su za primjenu na Internetu zbog veličine zapisa
datoteka. Iako je sve raširenija upotreba tipova zapisa koji koriste velike
stupnjeve komprijesije podataka, ona ne osigurava prikaz u realnom vrijemenu
preko globalne mreže. Pojava streaming formata zapisa dozvoljava prikaz prije
skidanja kompletnog datoteke, mada je realno primenljiva samo pri korištenju
zapisa manjih dimenzija (u pikselima) i na djelovima mreže koji mogu
obezbjediti potreban protok za prikaz.
Odgovor: Flash
Flash je proizvod
kompanije Macromedia čiji se datoteke (filmovi) sa ekstenzijom .swf prikazuju u
web-pretraživaču putem plug-in dodatka. Flash plug-in Player je razvijen i
razvija se za sve vodeće platforme (procesor + operativni sistem +
pretraživač). Format .swf je u formi open-source što omogućava njegovo brže i
raširenije prisustvo u svjetskim razmjerama. Na naslovnoj stranici prezentacije
firme Macromedia najsvježiji podatak je da 98.3% korisnika Interneta posjeduje
ovaj dodatak. Ovo praktično govori da Flash je postao standard u svjetu
globalne mreže i, uz činjenicu da većina novijih pretraživača pri samoj
instalaciji postavljaju ovaj plug-in u svoje okruženje, da onaj “ostatak”
uglavnom predstavljaju korisnisnici zastarjelih verzija programa koji ionako ne
mogu udovoljiti zahtjevima suvremenih prezentacija.
Nezavisnost od platforme
Znači, svaki
posjetilac koji posjeduje Flash Player ima mogućnost da pogleda .swf film jer
ne zavisi od platforme sa koje pristupa datoteci. Dalje, postoji mogućnost da
se svi fontovi potrebni za pjezentaciju u Flashu uključe u dokument, tako da izgled
ne zavisi ni od fontova instaliranih na računalu. Svi grafički elementi u
Flashu, pa i fontovi, su vektorski opisani (ako se izuzme mogućnost uvoza
bitmap slika) tako da je moguće skaliranje cjelog filma prema prozoru
pretraživača odnosno – nema zavisnosti od ekranske rezolucije.
Kako Flash ne
zavisi od platforme, konstrukcije ispitivanja okruženja zbog prilagođenja
prikaza nisu potrebne – svaka realizacija prikaza radi se točno jednom.
Vektorska grafika
Opis vektorske
grafike je jednostavan i nema gubitka podataka jer nema ni komprijesije. Film
je u jednoj datoteci tako da server obrađuje samo jedan zahtjev pri slanju
filma klijentu. Ukupna veličina .swf datoteke je manja od analogno tome rađene
HTML stranice. I sljedeće: Flash film može početi da se prikazuje odmah nakon
učitavanja prvih kadrova filma, prije nego što se kompletno učita kod klijenta.
Animacija i
interakcija
Flash datoteka
naziva se film zbog mogućnosti animacije, osnovne prijednosti na Internetu u
odnosu na sva druga ponuđena rješenja.
Primjer:
animacija kvadrata koji se rotira po nekoj putanji i pritom mjenja svoju
veličinu, pamti se kao objekat opisan pozicijom nekoliko točaka, početnom i
krajnjom pozicijom objekta, faktorom slaliranja objekta i parametrom broja
okretaja tokom animacije. Cjeli taj opis može biti smješten u desetak bajtova,
bez obzira na veličinu kvadrata i broj slika koje učestvuju u cjeloj animaciji.
Realizacija iste ove animacije u bitmapiranom svjetu je niz potrebnog broja
slika (dužina animacije), od kojih svaka slika kompletno opisuje sadržaj boje
svojih točaka (broj točaka zavisi od dimenzija – širina puta visina) ili
promjenu sadržaja u relaciji na prethodnu sliku. Znači, dimenzije animacije i
njena dužina značajno utječu na veličinu zapisa animacije.
Jedan od
elemenata Flasha su objekati koji mogu da reagiraju na određene događaje, među
kojima i su korisnikove akcije unosa putem tipkovnice ili akcije miša, koji
dalje mogu uvjetovati ponašanje u filmu. Kompletan sadržaj filma u Flashu može
se mjenjati, kao odgovor na korisničke akcije, bez potrebe za dovlačenjem
sadržaja sa servera, jer se cjelokupni sadržaj može se nalaziti u okviru samog
filma. U okviru Flasha se za upravljanje kontrolom filma koristi jezik
ActionScript.
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.
Skript jezik je
programski jezik koji se koristi za manipulaciju, prilagođenje i automatizaciju
postojećeg sistema. U takvim sistemima, funkcionalnost je već osigurana putem
korisničkog sučelja, a skript jezik prijedstavlja mehanizam za proširenje
funkcionasti programskom kontrolom. Za postojeći sistem se kaže da osigurava
domaćinsko okruženje za objekte i mogućnosti koje kontrolira skript jezik.
Asocijacija
europskih proizvođača računala (ECMA – the European Computers Manufacturers
Association, http://www.ecma.ch/) sastavila je
dokument pod nazivom ECMA-262 čiji je cilj standardizacija jezika JavaScript.
ActionScript zasniva se na specifikaciji ovog dokumenta.
-:- http://www.ecma.ch/ecma1/STAND/ECMA-262.HTM
1. Elementi jezika
Sintaksa
ActionScripta podsjeća na Javu. Razlika je u tome što jezik upućuje na
jednostavnost u korištenju. Na Primjer, varijabla ne mora imati deklariran tip
niti se tipovi povezuju sa osobinama objekta, a definirane funkcije ne moraju
biti deklarirane u tekstu prije njihovog poziva.
ActionScript se
zasniva na objektima: osnovni jezik i okruženje Flasha osiguravaju se putem
objekta, a sam program u ActionScriptu je put komunikaciji među objektima. Sam
objekt je kolekcija osobina (properties) koje mogu imati atribute koji određuju
način korištenja osobine (na Primjer – ReadOnly). Osobine su kontejneri koji
sadržavaju druge objekte, primitivne vrednosti ili metode. Objekt u ovom smislu
prijedstavlja referencu na objekt, primitivna vrednost je vrjednost nekog primitivnog
tipa podataka, a metoda je funkcija koja se s objektom povezuje putem osobine.
1.1. Tipovi podataka i varijable
Tip podataka
prijedstavlja vrstu informacije koju varijabla ili element ActionScripta može
sadržavti. Tipovi podataka djele se na primitivne i referentne tipove, a
postoje i specijalni tipovi podataka.
Primitivni tipovi
su string, number i boolean
Referentni tipovi
su object, function i movieClip
Specijalni tipovi
podataka: null i Undefined
Referentni tipovi
kao vrjednost imaju adresu svog sadržaja. Tip movieClip je grafička reprezentacija elemenata
Flasha.
var myVar;
trace (“typeof
(myVar): ” + typeof (myVar)); // undefined
myVar = true;
trace (“typeof
(myVar): ” + typeof (myVar)); // boolean
myVar = 0;
trace (“typeof
(myVar): ” + typeof (myVar)); // number
myVar = “my
String”;
trace (“typeof
(myVar): ” + typeof (myVar)); // string
myVar = new Array
();
trace (“typeof
(myVar): ” + typeof (myVar)); // object
myVar = trace;
trace (“typeof (myVar):
” + typeof (myVar)); // function
myVar (“typeof
(myVar): ” + typeof (myVar)); // function
Varijabla se može deklarirati sa var. Deklaracija određuje njeno ime
i lokalnost, odnosno varijabla tada postaje lokalna u bloku u kome je
deklarirana. U navedenom primjeru korištene su funkcije trace, koja služi za ispis string
vrjednosti izraza svog argumenta u posebni izlazni prozor (korisno pri
testiranju programa), i typeof, koja vraća naziv tipa izraza
svog argumenta. Dvostruka kosa crta (//) prijedstavlja početak
linijskog komentara, pri interprijetaciji se ignoriraju svi karakteri u liniji
nakon ove oznake (komentar u više linija postavlja se između oznaka /* i */). Prvi poziv funkcije trace u izlazni prozor ispisuje
“typeof (myVar): undefined” jer varijabli nije dodjeljena vrjednost, tako da
joj nije određen ni tip. Dodjela vrjednosti određuje tip varijable. To znači da
varijabla može mjenjti svoj tip. U primjeru, posljednjom dodjelom (myVar = trace) je varijabli dodjeljena
funkcija trace, znači ona je tipa function, ona postaje funkcija koja se
ponaša na isti način kao i trace, tako da posjlednja linija
poziva varijablu myVar kao funkciju i dobija se
također odziv u izlaznom prozoru.
Varijabla
se ne mora deklarirati. U tom slučaju smatra se za globalnu.
ActionScript
vrši automatsku konverziju tipova pri izvođenju operacija, tako da nedefinirane
varijable mogu učestvovati u operacijama, gde se prevode kao neutralni element
zbrajanja (logičko – false, numerički – 0, string – “”).
1.2. Operatori
ActionScript
definira skup ugrađenih operatora koji se mogu podjeliti u sljedeće grupe:
numerički operatori, operatori usporedbe, String operatori, logički operatori,
bit-orjentirani operatori, operatori jednakosti i operatori dodjele. Kao i u
drugim programskim jezicima, operatori su hijerarhijski određeni po prioritetu izvršavanja
operacija.
Zanimljivi
operatori su, recimo, operatori dodjele, što pokazuje sledeći
Primjer:
var
myString = “my”;
myString += “
String”;
trace (“myString:
“ + myString); // “myString: my String”
Prva linija
deklarira varijablu
myString i dodeljuje mu (“obična” dodjela) String vrjednost “my”. U drugoj linija koda također je
dodjela, ali sa operatorom +=, što semantički prijedstavlja
sljedeće: zbroji vrjednost operanda s ljeve strane operatora (varijablu myString) sa operandom s desne strane (“
String”) i rezultat zbrajanja dodjeli varijabli s ljeve strane.
Drugi
primjer pokazuje operatore inkrementacije (++):
var
myVar = 0;
trace
(“myVar: “ + myVar);
// “myVar: 0“
trace
(“myVar++: “ + myVar++); // “myVar++:
0“
trace
(“myVar: “ + myVar);
// “myVar: 1“
trace
(“++myVar: “ + ++myVar); // “++myVar:
2“
trace
(“myVar: “ + myVar);
// “myVar: 2“
Post-inkrementacija
povećava vrijednost varijable nakon njenog učestvovanja u izrazu, a
prije-inkrementacija prvo povećava vrjednost varijable koja daje svoju novu
vrjednost za izračunavanje izraza.
Treći
Primjer, uvjetna dodjela:
var
myBool = true;
var notBool
= !myBool;
trace
(“myBool: “ + ((myBool) ? myBool : notBool));
trace
(“notBool: “ + ((notBool) ? myBool : notBool));
Uvjetna
dodjela je ternarni operator. Prvi operand je logički izraz koji se izračunava.
Ako je izračunao true, operator računa vrjednost
drugog operanda (iza znaka pitanja) i to vraća kao rezultat, inače (izračunato false) se računa vrijednost trećeg
operanda (iza dvotočke) i to postaje rezultat. U ovom primjeru prvi poziv trace
ispisuje “myBool: true”, jer se ispituje uvjet myBool (true) i vraća vrijednost drugog
operanda (myBool ima vrijednost true), dok drugi poziv ispisuje
“notBool: false” jer je uvjet netočan (notBool, pri dodjeli je !myBool, negacija od true) pa se vraća vrijednost trećeg
operanda (notBool je false).
1.3. Grananje i petlje
Naredba if u ActionScriptu ima sledeću sintaksu:
if (condition) {
// statements
} else {
// statements
}
Ovdje je condition logički izraz, obavezno naveden u zagradama, na osnovu kojeg
se donosi odluka da li se izvršava kod bloka naredbi unutar vitričastih
zagrada. Blok naredbi se uvjek navodi unutar vitričastih zagrada, a pojedine
naredbe u bloku razdvajaju se točka-zarezom (;). U slučaju samo jedne naredbe
nije neophodno navođenje vitričastih zagrada. Druga grana (else) Također nije obavezna. U
ActionScriptu kod Flasha 5 ne postoji switch naredba za višestruko grananje,
a to je jedna od novina koje donosi nova verzija programa, Flash MX.
Ponavljanje
djela koda osigurano 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 napuštanje petlje.
for
(init; condition; next) {
// statements
}
Slično kao i u jeziku Java, for petlja zadaje se s tri
parametra: inicijalna vrijednost kontrolne varijable, izlazni uvjet i izraz za
izračunavanje prije naredne iteracije. Po definiciji je dozvoljeno
izostavljanje bilo kog od ova tri djela (ostaje točka-zarez). Izraz init se izračunava samo jednom,
prije početka prve iteracije, izraz condition mora biti logički i izračunava
se prije 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, pascalovu konstrukciju. Ipak, uobičajeno se
koristi baš simulacija te osnovne konstrukcije, postavljanjem inicijalne
vrijednosti kontrolne varijable u prvom djelu, usporedba kontrolne varijable s
nekom izlaznom vrijednošću u drugom djelu i inkrementiranje ili dekrementiranje
kontrolne varijable u trećem djelu.
while (condition)
{
// statements
}
Dok god
je uvjet condition ispunjen izvršava se blok naredbi petlje while. Ovo ispitivanje može biti i
numeričko, u kom slučaju se ispituje različitost od vrijednosti 0.
do {
// statements
} while (condition)
Slično
je i kod petlje do-while, s razlikom što se prvo
izvršava blok naredbi, pa tek onda proverava uvjet (što znači, kod bloka
izvršava se bar jednom). Ovo podsjeća na paskalsko repeat-until, a razlika je kod uvjeta – do-while radi dok je ispunjen uvjet, a repeat-until prijekida po ispunjenju uvjeta.
for
(variableiterant in object){
// statements
}
Petlja for-in koristi se osobinama objekta. Primjer:
myObject = {name:'
for (name in myObject) {
trace ("myObject." + name + " = " + myObject [name]);
}
Primjer je iz
rječnika ActionScripta 5. Izlaz izgleda ovako:
myObject.name =
myObject.age = 27
myObject.city =
Prva
linija koda daje jedan način zadavanja objekta. Objekt myObject ima 3 osobine, svakoj je
dodjeljena određena vrijednost. Varijabli name u for-in petlji pridružuju se imena
osobina objekta myObject, redom kroz iteracije. Primjer Također prikazuje dva
načina pristupa vrijednostima osobina objekta. U izlaznom prozoru prikazan je
prikaz referenciranja “točkom”, odnosno navodi se ime objekta, točka i sljedi
ime osobine. To i je 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 varijablu petlje. Stoga je korištena referenca myObject [name], koja izračunava izraz u uglastim
zagradama (vrijednost varijable name) i potom traži vrijednost
odgovarajuće osobine objekta.
1.4. Funkcije
Definicija
funkcije:
function
myFunc ([arg0, arg1,...argN]) {
// statements
}
// ili
function ([arg0, arg1,...argN]) {
// statements
}
Funkcija
je blok koda koji se može više puta koristiti pozivom funkcije. Primjer poziva
bio bi myFunc ([par1, par2,...parN]). U zagradi ovde nalaze se parametri
funkcije, koje ona pri izvršavanju ona prima kao argumente. Uglaste zagrade su
u primjeru navedene u smislu BNF notacije, odnosno ukazuju na opcionu pojavu
parametara i argumenata. Funkcija ove parametre vidi kao vrijednosne parametre,
nema varijabilnih parametara, te se ne mogu mjenjati vrijednosti ovih
parametara van lokalnosti funkcije, uz dužnu pažnju referentnim podacima, gde se može direktno pristupati osobinama objekta, na primjer.
Ulazne parametre funkcija vidi kao niz arguments, broj deklariranih imenovanih parametara funkcije ne mora
se poklapati sa brojem argumenata koji se prosljeđuju funkciji. Pristup imenovanim parametrima u funkciji moguć je direktno navođenjem imena parametra, a pristup proizvoljnom parametru ostvaruje se kao pristup elementu niza arguments na određenom indeksu. Primjer:
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 primjeru se lokalna varijabla myVar samo deklarira, inicijalno nema vrijednost, znači tipa je undefined. Prvo zbrajanje je sa
argumentom tipa number, pa se varijabla konvertira u vrijednost 0, zbraja sa 3 i dobija vrijednost 3. Zbrajanje sa drugim argumentom je zbrajanje dva broja, pa myVar dobija vrijednost 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 dobiva vrijednost
“7to11”.
Funkcija može vratiti vrijednost korištenjem naredbe return returnValue, ovde returnValue prijedstavlja izraz čiju vrijednost funkcija vraća. Korištenjem same naredbe return (bez izraza) samo
se napušta funkcija. Naredba return je izbor u
funkciji, a može se pojavljivati na više mjesta u kodu funkcije (obično nakon
ispunjenja nekog uvjeta), vraćajući različite vrijednosti, čak i različitog
tipa. Primjer:
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
*/
Ovdje
je izbjegnuto duboko ugnježđivanje if-else, jer se iz funkcije izlazi po
prvom ispunjenju nekog uvjeta.
U
ActionScriptu postoje predefinirane funkcije, a mogu se definirati i nove.
Često se funkcija pridružuje nekom objektu, tada ona postaje metoda objekta.
1.5. Objekti
Objekt
je skup osobina koje mogu imati vrijednosti nekog tipa. Svaki objekt
jedinstveno se identificira svojim imenom. Već spomenuti primjer:
myObject = {name:'
Objekt myObject ima tri osobine i svakoj
osobini dodjeljena je vrijednost. Pristup osobini age, naprimjer, može 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 (‘
Ovaj kod kao krajnji rezultat daje također objekt myObject sa potpuno istim osobinama i
vrijednostima osobina kao i prijethodni primjer. Razlika postoji. Sada je myObject instanca klase person, a funkcija person naziva se konstruktorom klase person. Objekt se instancira
pozivanjem ključne reči new i konstruktora. Ključna riječ this u konstruktoru referencira na objekt koji se kreira.
Sljedeći primjer dodaje metoda klasi person:
function showPerson () {
var myString = this.name + “, “ +
this.age + “, “ + this.city;
trace (myString);
}
person.prototype.show = showPerson;
myObject.show (); // “
Sve
funkcije posjeduju osobinu prototype koja se automatski kreira pri
definiciji funkcije. Pri kreiranju novog objekta konstruktorom, sve osobine i
metodae konstruktorske osobine prototype postaju osobine i metodae
osobine __proto__ novokreiranog objekta. Kada se referencira neka osobina ili metoda
objekta, ActionScript traži postoji li takva osobina ili metodaa, ako ne
postoji, traži se u okviru osobina i metodaa njegovog __proto__ objekta (i dalje __proto__.__proto__, ...). Ovo je nasljeđivanje u ActionScriptu. Uobičajena praksa je
dodeljivanje metoda osobini prototype konstruktora, kao što i stoji u
navedenom primjeru.
ActionScript već
dolazi sa dobrim skupom predefiniranih objekta.
Postoji skup
ugrađenih Objekta prijeuzetih iz ECMA specifikacije:
Object – najopča klasa objekta
Array – niz, sa metodama manipulaciju nizom, dodavanje i
uzimanje elementa niza sa početka ili kraja, sortiranje itd, osobina length je dužina niza...
String – metode za manipulaciju stringovima, podniz,
konkatenacija...
Boolean
Number – konstante, najmanja i najveća vrijednost,
beskonačnost...
Math – aritmetičke i trigonometrijske funkcije, matematičke
konstante...
Date – datum i vrijeme
Pored ovih,
ugrađeni su i bitni objekti za Flash okruženje:
MovieClip – osobine od značaja za vizualnu reprezentaciju
objekta, širina, visina, horizontalna i vertikalna pozicija, vidljivost,
providnost, rotacija...; metode za kontrolu osobina, za kretanje po vremenskoj
osi, kreiranje i uništavanje instanci, prevlačenje objekta...
Selection – kontrola tekstualnih polja
Mouse – skrivanje i pokazivanje pokazivača miša
Key – konstante specijalnih tipki tipkovnice, kodovi
karaktera...
Color – transformacije boje MovieClip objekta...
Sound – kontrola zvuka i zvučnih efekata
XML – učitavanje, slanje, parsiranje, izgradnja XML
dokumenata...
XMLSocket – stalna veza sa serverom, uspostavljanje i
prijekid veze...
2. Programiranje u ActionScriptu
Programski
elementi, akcije, u Flash filmu mogu se nalaziti na više mjesta. Kako se film
odvija po vremenskoj osi podjeljenoj na sličice, djelovi koda mogu biti
dodeljeni sličicama. Taj kod izvršava se kada se film nađe na određenom
sličici. Pored toga, instance simbola tipa tipka također se mogu programirati
za izvođenje određenih akcija pri pojavi nekog događaja, poput pritiska na
tipku. Instance simbola tipa filmski klip također mogu reagirati na neke
događaje ako im se pridruže potrebne akcije. Uz to, simbol tipa filmski klip je
također film po svojoj definiciji, posjeduje svoju vremensku os, a može
sadržavati i druge instance simbola tipa tipka ili filmski klip, pa se cjela
priča može ponoviti u kontekstu definicije simbola. Ovo daje mogućnost velike
zbrke i raštrkavanja koda na sve moguće strane, što s druge strane onemogućava
korektno praćenje toka filma, nalaženje grešaka, i slično. Stoga je preporuka
držanje koda na manje mjesta, pogotovo definicije varijabli, funkcija i
objekta, recimo u prvoj sličici filma ili definicije simbola, dok se za obradu
događaja može samo navesti poziv već definirane funkcije ili metodaa nekog
objekta.
Događaji instanci
simbola tipa tipka
Kod koji se
pridružuje instanci simbola tipa tipka nalazi se u hendleru on:
on (mouseEvent) {
// statements
}
Za jednu instancu
može se postaviti više hendlera, zavisno od događaja mouseEvent. Jedan hendler
može opsluživati više događaja razdvojenih zarezom u zaglavlju hendlera. Kod
pridružen hendleru izvršava se kada se desi neki od događaja navedenih u
zaglavlju hendlera. Sljedi opis događaja koje prepoznaje objekt tipa button:
press – tipka miša je pritisnuta dok je pokazivač iznad
tipkata
release – tipka miša je otpuštena dok je pokazivač iznad
tipkata
releaseOutside – tipka miša je otpuštena dok
je pokazivač van tipkata
rollOver – pokazivač miša kreće se iznad tipkata
rollOut – pokazivač miša je napustio površinu tipkata
dragOver – dok je pokazivač iznad tipkata, tipka miša je
pritisnuta, pokazivač pomeren van površine tipkata i potom vraćen iznad
dragOut – dok je pokazivač iznad tipkata, tipka miša je
pritisnuto i potom pokazivač pomaknut van površine tipkata
keyPrijess (“key”) – tipka key je pritisnut
Događaji instance
simbola tipa filmski klip
Instanca simbola
tipa filmski klip Također reaguje na događaje.
onClipEvent
(movieEvent) {
// statements
}
Ovdje 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 sličici nakon
uklanjanja objekta sa vremenske osi, a izvodi se prije bilo koje akcije vezane
za promatranu sličicu
enterFrame – akcija se inicira pri svakoj sličici, a izvodi
se nakon svih akcija vezanih za posmatranu sličicu
mouseMove – akcija se inicira pri svakom pomicanju miša
mouseDown – akcija se inicira pritiskom na ljevo tipkalo
miša
mouseUp – akcija se inicira otpuštanjem ljevog tipkla miša
keyDown – akcija se inicira pritiskom na neku tipku
keyUp – akcija se inicira otpuštanjem tipki
data – akcija se inicira prijemom podataka pri učitavanju
Vektorska grafika i animacija Flasha i jezik ActionScript svojom
raznovrsnošću omogućavaju rješavanje širokog spektra web problematike. Od
kreiranja navigacijskih rješenja 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.
[1] Dejan Katašić “Flash i ActionScript” diplomski rad