FLASH 10. NADALJEVANJE IZŠT. 2/2007, STR. 23 22 IZPOPOLNJENA INTERAKTIVNOST Ta članek je nadaljevanje prej- šnjega, v katerem smo obravna- vali osnove programskega jezika Flasha, actionscript. V tem član- ku bomo skozi primere spoznali malce bolj zahtevno uporabo ac- tionscripta, kljub temu pa bo še vedno precej daleč od pravega programiranja in doseganja pro- fesionalnih interaktivnih učin- kov, kot jih lahko zasledimo po- nekod na internetu. Temeljil bo na konkretnih primerih, saj je ta- ko najlažje predstaviti določene ukaze, ki so začetnim uporabni- kom težje razumljivi. Vlečenje objekta Izdelali bomo preprost objekt, ki ga z miško lahko vlečemo po prizorišču. To je eden od naju- činkovitejših načinov vplivanja in odzivanja uporabnikov na do- godke in hkrati eden osnovnih načinov, ki se uporablja pri veči- ni iger in tudi kot učinkovita uč- na metoda. Primer najlažje izvedemo z uporabo primerka gumba. Razli- ka v primerjavi z dosedanjim obravnavanjem gumbov in njim pripetih akcij v prejšnjih člankih je v tem, da je treba primerek simbola na prizorišču poimeno- vati. To storimo v oknu z la- stnostmi, kot prikazuje slika 1. V zgornjem primeru smo pri- merek simbola gumba poimeno- vali vlecni_gumb. To poimeno- vanje je potrebno zato, da se lah- ko v programski kodi actionscr- tipta pozneje sklicujemo nanj (bolj nazorno bomo videli na primeru). Drugi razlog pa je, da imamo seveda lahko na prizori- šču več primerkov istega simbola in jih tako ločimo med seboj. Ker imamo torej opraviti s program- skim jezikom actionscripta, je pri poimenovanjih primerkov sim- bolov treba upoštevati kar nekaj pravil: 7 imena ne smejo imeti pre- sledkov (napačno: vlecni gumb; pravilno: vlecni_gumb, vlecni- gumb); 7 imena ne smejo imetišumni- kov (č, š, ž) in drugih posebnih črk abeced različnih jezikov (ć,đ, ö, ü itn.); 7 imena ne smejo vsebovati po- sebnih znakov (?, !, *, #, & itn.). Akciji, s katerima dosežemo vlečenje gumba, sta startDrag in stopDrag. Sta v orodjarni akcij pod Action→ Movie Clip Con- trol. Programsko kodo uporabe teh dveh akcij prikazuje slika 2. Tam vidimo, kje v programski kodi smo uporabili ime primerka simbola. Pri tem moramo paziti, da je vlečenje gumba pogojeno z dogodkom press (pritisni) in pre- nehanje vlečenja z dogodkom re- lease (izpusti).Če kodo »prevede- mo« v nam razumljiv jezik, po- meni: ob pritisku miške na gumb z imenom vlecni_gumb tega zač- ni vleči (sledi gibanju miške), ob izpustu miške prenehaj vleči. Iz slike vidimo tudi, da smo na- stavili še dve dodatni možnosti: Constrain to rectangle in Lock mo- use to center. S pomočjo prve na- stavljamo štiri mejne vrednosti položaja, do koder se objekt lah- ko giblje: L – left (levo), R – right (desno), T – top (zgoraj), B – bottom (spodaj). Te vrednosti podajamo v točkah, podobno kot dimenzije dokumenta, kar smo spoznali v enem prvih član- kov. Druga nastavitev pa pome- ni, da se nam ob kliku miške na gumb ta postavi na sredino mi- škinega kurzorja. Skoraj identično lahko vlečemo tudi animirane izrezke (Movie Clip). Primeri dveh vlečnih gumbov in enega animiranega Slika 1. Poimenovanje primerka simbola. izrezka so na spletni strani Grafi- čarja. Vpisovanje in izpis podatkov Drugo zanimivo področje inte- raktivnosti uporabnika je vnos in izpis podatkov. Nekatera najbolj uporabna področja tega načina uporabe so: 7 vpraševanje uporabnika po imenu; 7 postavljanje vprašanj uporab- niku in spremljanje njegovih od- govorov; 7 prikazovanje vsebine, ki se pogosto spreminja. Na začetku izvedbe takih nalog moramo najprej razjasniti dva osnovna pojma računalniškega programiranja: ime in vrednosti spremenljivke. Z imenom spre- menljivke določamo ime, katere- mu bomo prirejali različne vre- dnosti, vrednost spremenljivke pa je trenutna vrednost določene spremenljivke. Zadeva zveni do- kaj banalno, vendar iz izkušenj vem, da pri uporabi mešanje teh dveh pojmov ni tako redko. Dva primera prikazuje tabela 1. Kot vidimo, vrednosti spre- menljivke niso vedno številskega tipa, ampak so lahko tudi opisne. S spremenljivkami lahko v osno- vi počnemo dvoje: 7 določanje ali spreminjanje njihovih vrednosti; 7 ugotavljanje in preverjanje njihovih vrednosti. V prvem primeru v oknu z la- stnostmi pri nastavitvah lastnosti teksta nastavimo možnost Input Text za vnašanje vrednosti, v Slika 2. Programska koda za vlečenje objekta (gumba). MEDIJSKO OBLIKOVANJE 23 drugem primeru pa možnost Dy- namic Text za izpis vrednosti. Primer vnašanja in izpisovanja imena je na spletni strani Grafi- čarja. Primer je izveden v dveh ključ- nih sličicah. V prvi je vnosno po- lje z nastavitvijo Input Text. To polje določimo kot spremenljiv- ko z imenom vpis_ imena. Torej se tej spremenljivki ob vpisu imena priredi vrednost, to pa je ime, ki smo ga vpisali. V drugi ključni sličici pa je po- lje za izpis, ki ima nastavitev Dy- namic Text, temu polju pa smo dali ime izpis. V drugi celici smo nato vstavili akcijo določanja vrednosti spremenljivke: izpis = "Pozdravljeni, " + vpis_imena + "!"; kar pomeni, da se v spremen- ljivki z imenom izpis priredi vre- dnost "Pozdravljeni, " + vpis_imena + "!". To je v bistvu sestavljanje niza besed. Kar je v narekovajih, se normalno izpiše, kot vrednost spremenljivke vpis_imena pa se izpiše ime, ki smo ga vpisali ob vpisu imena. Priznam, da je za začetnike to malce težje razumljivo, izkuše- nim programerjem pa je zelo po- znano, ker je to ena izmed osnov programiranja s spremenljivka- mi. Slika 3 prikazuje primere opisanega postopka vnašanja in izpisovanja imena. Prvi del slike je prikaz prve ključne sličice in nastavitev la- stnosti vnosnega polja, drugi del prikaz druge ključne sličice na- stavitev lastnosti izpisnega polja, tretji del pa prikazuje akcijo izpi- sa v drugi ključni sličici. Nastavljanje in spreminjanje lastnosti objektom Tretji zanimiv primer je nasta- vljanje in spreminjanje lastnosti določenim objektom. Na spletni strani Grafičarja je primer nasta- vljanja in spreminjanja prosoj- nosti objekta, njegovo pomika- nje in spreminjanje velikosti. Podobno kot v prejšnjih dveh primerih smo primerek simbola na prizorišču poimenovali, v na- šem primeru kar krog. Nato gumbom pripenjamo akcije, s katerimi temu krogu spreminja- mo lastnosti. Pri spreminjanju prosojnosti lahko nastavimo prosojnost alpha na 50 odstot- kov in jo spreminjamo v korakih po deset, pri pomikanju objekta spreminjamo vrednosti koordi- nat x in y danega objekta za deset enot, pri spreminjanju višine in širine pa to spreminjamo prav ta- ko po deset enot. Akcije za opisa- ni primer prikazuje tabela 2. V tabeli vidimo, da smo upora- bili lastnosti SetProperty, ki je pod Action→ Movie Clip Con- trol. V oknu z akcijami nato v spustnem seznamu lahko izbira- mo med osnovnimi lastnostmi, kot so višina, širina, obrat, pro- sojnost itn. Povzetek V tem članku smo skozi posa- mezne primere spoznali malce bolj zahtevno uporabo action- Spodaj slika 3. Primer vpisovanja in izpisovanja imena. scripta, ki uporabniku omogoča večjo interaktivnost z izdelki, na- rejenimi v Flashu. Poudariti mo- ram, da je to še vedno osnovna uporaba actionscripta, saj je pri izdelavi zahtevnih projektov, ki vsebujejo pravo uporabnikovo vplivanje na rezultat (razne sple- tne igre, izdelane v Flashu), koda actionscripta dolga več strani. Vendar smo kljub temu v tem članku spoznali osnove premika- nja objekta po prizorišču, tehni- ke vpisovanja in izpisovanja po- datkov in osnove nastavljanja in spreminjanja lastnosti. Primeri, povezani s tem član- kom, so na spletni strani www. delo.si/graficar (začasno v rubriki ZADNJA ŠTEVILKA, kasneje v rubriki oz. v oknu ARHIV/Grafi- čar 2007/Grafičar 3/2007). Andrej ISKRA Univerza v Ljubljani TABELA 1. SPREMENLJIVKI IN NJUNE VREDNOSTI IME SPREMENLJIVKE Hitrost Barva mize VREDNOST SPREMENLJIVKE 50 km/uro Rdeča on (release) ( setProperty("krog", _alpha, "50"); ) TABELA 2. AKCIJE NASTAVITEV PROSOJNOSTI IN PREMIKANJE OBJEKTA NASTAVLJANJE PROSOJNOSTI PREMIKANJE OBJEKTA on (release) ( krog._y -= 10; ) SPREMINJANJEŠIRINE IN VIŠINE on (release) ( krog._y += 10; ) on (release) ( krog._x -= 10; ) on (release) ( krog._x += 10; ) on (release) ( krog._width += 10; ) on (release) ( krog._width -= 10; ) on (release) ( krog._height += 10; ) on (release) ( krog._height -= 10; ) on (release) ( krog._alpha -= 10; ) on (release) ( krog._alpha += 10; )