
Pozdrav
webmajstori!Na siteu je objavljen vodic Relativno
i apsolutno pozivanje Flash objekata pomocu ActionScripta autora Vlahe
Soletica. Vodicu govorio o hijerarhiji u Flashu i, vezano uz hijerarhije razina,
o tome zasto i kako pozivati Flash objekte. "Pametni"
popup-ovi u Flashu pomocu JavaScripta
Napisao: Vlaho Soletic - SHoLa © 2001 - 2003 Kontrolirajte
ucitavanje podataka u Flash filmove pomocu JavaScripta. Ako ste se oduvijek pitali
kako manipulirati Flashom bez upotrebe dinamickih ASP ili PHP skripti, ovdje cete
saznati nesto o tome.Flash omogucuje zavidnu interakciju korisnika i prezentacije
(ili Flash sitea) putem svog Flash playera koji se integrira u browser kada Flash
objekt ubacimo u sirov HTML kôd. Player izvrsava funkcije sadrzane unutar .swf
objekta. Prije nekog vremena prijatelj mi je natuknuo da bi bilo zgodno
kada bi Flash znao kada ga gledamo, a kada ne, odnosno kada je prozor browsera
s Flash animacijom u fokusu, a kada nije. To mi je dalo ideju za ovaj vodic.
Zasto bi nam to bilo vazno? Na primjer, kada prezentacija/site unutar sebe ima
sadrzan glazbeni loop, muzika se cuje bez obzira na to je li prozor browsera aktivan
ili u pozadini. Muzika moze biti dobra, ali ako ucitamo jos koji Flash film, dolazi
do problema: dva glazbena loopa unutar dva razlicita prozora ne mogu egzistirati.
Normalno, sve se moze izbjeci iskljucivanjem muzike u neaktivnom prozoru ako je
to moguce. Mogu navesti jos jako puno primjera, a zajednicka im je kontrola
Flash filma vanjskim utjecajem, dakle bez interakcije sa samim Flash objektom.
Flash i JavaScriptU ranijem clanku
o izradi Flash bannera pokazali smo kako kontrolirati browser iz Flash ActionScripta
preko JavaScripta. Na sljedecem primjeru pokazat cemo kako kontrolirati
browser pritiskom na Flash gumb unutar prezentacije: on (release)
{ getURL("javascript:self.close()") }Gumbu u Flash filmu
pridijelili smo gore navedenu akciju. Akcija ce preko getURL
naredbe izvrsiti JavaScript i zatvoriti prozor koji promatramo. Ovo je
jedna od najjednostavnijih metoda izvrsavanja JavaScripta unutar Flash filma.
Postoje i kompliciranije metode upotrebom akcije fscommand, ali
mi se u ovom tekstu necemo baviti njima. Kako vidimo, Flash moze pozvati
JavaScript funkciju i time kontrolirati browser, ali postavlja se pitanje: je
li moguce i obrnuto, tj. kontrolirati tijek Flash filma pomocu browsera i JavaScripta? Kako
upravljati Flashom preko JavaScriptaJavaScript ne moze preuzeti kontrolu
nad Flashom i njegovim playerom kao sto to moze npr. PHP, ali zato moze mijenjati
varijable unutar Flasha i time odrediti tok animacije. Sama kontrola jednostavna
je i prikazat cemo je na dva primjera. Primjer 1:
Napravite scenu u Flashu koja ce sadrzavati dinamicko tekstualno polje. U polje
upisite jednostavan tekst. Varijablu polja (var) nazovite 'tekst'.
Samo ime instance nije nam potrebno i ne morate ga kreirati. Film spremite
kao ''tekst.fla'' i pomocu naredbe Publish kreirajte
.swf file. Svoj Flash objekt ubacite u HTML stranicu, a nakon
toga u tag <OBJECT> dodajte sljedeci atribut: ID="mojTekst" Unutar
<EMBED> taga dodajte: NAME="mojTekst"
swLiveconnect=true Ovi su atributi potrebni radi kompatibilnosti s Netscapeom.
Izgled cjelokupnog Flash objekta: <OBJECT
id="mojFilm"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/ shockwave/cabs/flash/swflash.cab#version=6,0,29,0"
width="550" height="400"> <PARAM name="movie"
value="tekst.swf"> <PARAM name="quality" value="high">
<EMBED name="mojFilm" src="tekst.swf"
quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" width="550" height="400" swLiveconnect=true>
</EMBED> </OBJECT> Sada mozemo u <HEAD> dio
HTML-a dodati JavaScript koji ce mijenjati varijablu 'tekst'
(dinamickog tekstualnog polja) unutar naseg Flash filma. <SCRIPT
language="JavaScript" type="text/JavaScript"> <!--
function FlashTekst(mojTekst){ window.document.mojFilm.SetVariable("tekst",
mojTekst); } --> </SCRIPT> Funkciju FlashTekst()
pozvat cemo klikom na gumb unutar HTML dokumenta tako da bilo gdje unutar tijela
HTML dokumenta, odnosno unutar <BODY>...</BODY> tagova, unesete: <INPUT
type="button" value="Pritisni i promijeni tekst" onClick="FlashTekst('Tekst
se promijenio...')"> Ako pokrenete stranicu
u browseru i kliknete gumb, promijenit cete tekst u Flash filmu. Jednostavno!
Primjer 2: Vratimo se prici s pocetka i osluskivanju
Flasha o stanju maticnog browsera. Za primjer cemo koristiti vec napravljeni Flash
film sa svojim tekstualnim poljem. Promjenljiva varijabla polja i dalje je 'tekst'.
<OBJEKT> unutar HTML kôda takodjer se ne mijenja. JavaScript u <HEAD>
dijelu dokumenta promijenjen je u: <SCRIPT language="JavaScript"
type="text/javascript"> <!-- function FlashTekst(aktivan){
if (aktivan){ window.document.mojFilm.SetVariable("_root.tekst",
"Prozor je aktivan"); } else { window.document.mojFilm.SetVariable("_root.tekst",
"Prozor je u pozadini"); } } --> </SCRIPT> Nasa
funkcija FlashTekst() sada ovisno o stanju prozora browsera mijenja
tekst unutar Flash filma u Prozor je aktivan ili u Prozor je u pozadini.
Kljucni
atributi nalaze se unutar <BODY> taga koji detektiraju je li prozor browsera
zaista aktivan ili nije: <BODY onFocus="FlashTekst(true)"
onBlur="FlashTekst(false)"> Gumb
je nestao jer nam vise ne treba. Za provjeru postavite neki prozor iznad
browsera i zamijenite im mjesta. Varijablu tekst namjerno sam pozvao
kao '_root.tekst', iako sam je mogao pozvati kao i u prijasnjem
primjeru, jednostavno 'tekst'. Poanta je da se staza do promjenljive
varijable definira na isti nacin kao i u Flashu. Ovo je jednostavan primjer
promjene varijable u Flash filmu. Moramo napomenuti da se na ovaj nacin moze mijenjati
svaka varijabla unutar Flasha, a ne samo dinamicka tekstualna polja. Na
primjer, recimo da smo u Flashu definirali varijablu '_root.mojaVarijabla'.
Na bilo koju instancu objekta mozemo 'zalijepiti' akciju: //ActionScript:
onClipEvent (enterFrame) { if (_root.mojaVarijabla == "mojTriger")
{ _root.gotoAndPlay("start"); } else { _root.stop(); } } Time
nam objekt ispituje dogadjaj ovisan o JavaScriptu koji se nalazi izvan Flash filma
i koji je zaduzen za mijenjanje sadrzaja varijable: <SCRIPT
language="JavaScript"> window.document. mojFilm.SetVariable('_root.mojaVarijabla'
"mojTriger"); </SCRIPT> Nemojte zaboraviti
da kôd koji je lomljen kao u gornjem primjeru napisete u jednoj liniji. Kôd lomimo
zbog grafickih nemogucnosti prikaza kompletne linije kôda. Za
kraj + privitak
Kako smo mogli vidjeti, brojne su mogucnosti upravljanja
Flash objektom iz samog HTML kôda. Kombinirajuci tekstualna polja HTML kôda
i JavaScripta jednostavno mozemo poslati podatke Flash filmu, mijenjajuci tako
osnovne parametre tijeka animacije. Takodjer, pomocu dinamickog HTML-a
Flash vise nije ogranicen svojim playerom, vec se u potpunosti integrira u browser,
mijenjajuci svoje okruzje prema potrebi, bez upotrebe dinamickih skripti kao sto
su ASP ili PHP. Sve primjere
skupili smo u .zip datoteku. Primjeri ukljucuju HTML stranice i .fla i .swf
Flash datoteke spremne za rad. Komentari Flasha nalaze se unutar komentara layera.
O autoru:
Vlaho Soletic - SHoLa (shola@net.hr)
- svoje slobodno vrijeme trati s Photoshopom, webom i Flashom. Autor je www.dubluesfest.coms.ph
i www.revolt.co.ba/shola,
a uskoro i samog www.revolt.co.ba.
Obozava prckati oko audio i video produkcije te se nada da ce mu to donijeti brdo
love u buducnosti. |