Tvorba hier vo Flashi - štvrtá čast

Potrebujete vedieť niečo o vstavanom komponente loader? Nechce sa Vám vytvárať vlastný pásik pre načítavanie obsahu? Nie je nič jednoduchšie ako použiť vstavaný kontajner v programe Macromedia Flash MX 2004...

Som rád, že sa opät stretávame pri dalšej časti seriálu o vytváraní našej malej Flash hry. Malá prestávka v písaní seriálu bola spôsobená mojou zaneprázdnenosťou a školskými povinnosťami ;) Pokračujme teda ďalej...

Loader je komponent, ktorý pomáha pri zobrazovaní *.swf súborov a *.jpg obrázkov. Komponent spolupracuje s komponentom ProgressBar. ProgressBar je klasický pásik zobrazujúci množstvo načítaných dát od 0 do 100% Samotný loader ako taký nemôže získať logickú hodnotu zamerania myšou (takzvaný focus). Avšak načítavaný obsah už zamerania získať môže. Zameranie myšou je dôležité pre ďalšiu interakciu používateľa s navrhnutým rozhraním.

Samozrejme, že loader nie je samostatne uzavretým komponentom, ale je poprepájaný aj s inými užitočnými programovými celkami potrebnými pre ovládanie a manipuláciu načítavaných dát. My sa však zamerajme len na jednoduché načítanie, ktoré je pre nás dôležité z hľadiska vytvorenia jednocuchej hry.
Komponentu je možné zadať nasledovné parametre:
autoload - ide o logickú hodnotu (true/false=áno/nie), ktorá udáva, či sa má obsah automaticky načítať (true) alebo sa má čakať na volanie metódy

loader.Load();
Štandardne nastavenou hodnotou je true.
content - udáva absolútnu alebo relatívnu URL (unified resource locator) cestu k načítavanému súboru. Poznámka: relatívna cesta sa vzťahuje na *.swf súbor obsahujúci komponent loader.
scaleContent - logická hodnota udávajúca mieru prispôsobenia sa. Teda pre true sa prispôsobia rozmery načítaného obsahu, pre false sa prispôsobí loader rozmermi načítanému obsahu. Štandardne je nastavené true.

Aby sme však veľa neteorertizovali, poďme si ukázať jednoduchý príklad na využitie komponentu loader v spolupráci s komponentom ProgressBar. Príklad je nasledovný:
Vytvoríme nový flash dokument, napríklad s názvom 1.swf. Do neho vložíme nejaký krátky videoklip (File->Import...). Po načítaní videoklipu klikneme na na prvý rámik (frame) časovej osi a otvoríme si okno pre zadávanie príkazov action scriptu (na klávesnici F9 pre Flash MX2004). Do okna pre akcie vpíšeme:

Stop();

Zastavíme teda videoklip už na začiatku, aby sa sám od seba nezačal perhrávať. Ďalej na plochu vložíme tlačítko. Môžeme použiť niektoré z vopred pripravených tlačítok (klikneme: Window->Other panels->Common Libraries->Buttons). Tu si stačí len vybrať nejaké tlačítko vhodného dizajnu pre spustenie prehrávania - Play tlačítko. Vybrané tlačítko stačí myšou pretiahnuť z priestoru zoznamu do plochy dokumentu. Vhodne si tlačítko umiestnime a upravíme veľkosť na ploche. Potom už len stačí kliknúť na tlačítko a stlačiť F9(štandardne). Zobrazí sa nám okno pre zadávanie príkazov ActionScriptu, kde zadáme nasledujúce príkazy:
	on(release) {
	Play();
	}

Tým sme povedali, že po stlačení tlačítka as má začať prehrávanie videoklipu. Takto pripravený súbor uložíme a vygenerujeme si príslušný 1.swf (v prostredí Flashu len stlačíme skratku CTRL+Enter). Tento súbor budeme chcieť teraz načítavať. Teda zavrieme súbor 1.fla a vo Flashi otvoríme nový dokument. Pomenujeme ho napríklad loader a uložíme. Na čistú plochu si najskôr vložíme komponent loader. (Nájdeme ho po kliknutí na Window->Development panels->Components). Klikneme na ploche na komponent loader, aby sme ho mali označený a následne klikneme na properties(vlastnosti). Tu nastavíme vlastnosti autoLoad: false, scaleContent: true, instance name: loader. Robí sa to jednoduchým kliknutím a výberom z popup menu. Obdobným spôsobom vložíme ďalší komponent - PogressBar (jednoduchým presunutím zo zoznamu do plochy dokumentu). Na ploche si upravíme polohu a veľkosť, akú požadujeme. Vo vlastnostiach tohoto komponentu je nutné nastaviť instance name na pBar a ďalej vlastnosť mode na manual. Priebežne si súbor ukladáme... Nakoniec stačí vykonať poslednú jednoduchú vec: Klikneme na prvý rámik(frame) časovej osi a následne stlačíme F9 pre otvorenie okna Actions, kde zadáme nasledujúce príkazy Actionscriptu:
global_sound = new Sound();
loadListener = new Object();
loadListener.progress = function(Loader){
b=Math.round(loader.percentLoaded);
pBar.setProgress(b, 100);
global_sound.setVolume(0);
	if (b>99) {
	pBar.visible=false;
	global_sound.setVolume(99);	
	}
   }
loader.addEventListener("progress", loadListener);
loader.contentPath = "1.swf";
loader.load();

Všetko pre simuláciu načítavania už máme teda pripravené, môžeme to vyskúšať. Vygenerujeme si loader.swf, jednoduchým stlačením CTRL+Enter. Vidíme, že súbor loader.swf načítal súbor 1.swf (sú spolu v jednom adresári). Načítanie z disku však bolo okamžité a my sme prakticky nemali možnosť vidieť komponent loader v spolupráci s progressBarom. Teda klineme vo vrchnej horizontálnej (vodorovnej) lište View->Download settings->56K, čím sme nastavili rýchlosť simulovaného sťahovania dokumentu z internetu na rýchlosť porovnateľnú s rýchlosťou klasického dial-up pripojenia. Ďalej stačí kliknúť View->Simulate download a vidíme postupné načítavanie od 0 do 100% aj s rozširujúcim sa progressBarom (načítavacím pásikom) podobným tomu z rôznych aplikácií. Bližšie si jednotlivé riadky tohoto skriptu okomentujeme v ďalšej časti...



Ján Hruboš, j111@azet.sk
Stiahnuté z Developer.sk