wz
Živě.cz

Živě.cz o počítačích a internetu

Začínáme s Flash MX 2004: 9. díl – první krůčky s ActionScriptem

Ondřej Brichta 9.5.2005

Dosud jsme se zabývali pouze kreslením a jednoduchými animacemi ve Flashi. Hlavní hnací silou veškerých flashových animací je však ActionScript. Dnes si vysvětlíme několik základních vlastností programování v tomto prostředí.

ActionScript

Základem veškerých flashových animací je objektově orientovaný programovací jazyk ActionScript(AS). To, že je AS objektově orientovaný, znamená, že zde existují třídy, ze kterých lze vytvářet instance - objekty. Tyto objekty mají své vlastnosti a metody, které dědí z třídy. Třídou je například MovieClip a instancemi jsou všechny vytvořené MC, vložené na scénu a jejich vlastnostmi mohu být například velikost, počet snímků animace, barva, pozice, natočení. Mezi metody patří například: stop, play, gotoAndStop, loadMovie.

Seznam všech předdefinovaných tříd najdeme na panelu akcí ve spodní části pracovní plochy. Pokud klikneme na symbol křížku v tomto panelu, zobrazí se nám kompletní nabídka možných scriptů.

Obr. 1

Seznam tříd najdeme pod položkou „Built in Classes:

Obr. 2

Instance MovieClipu

Abychom mohli pomocí AS ovládat vložené MC, musíme je vždy pojmenovat. Pojmenování instance MC ( objekt vložený na scénu) se provádí na panelu vlastností „Properties“ v poli <Instance Name>.

Obr. 3

Tečková syntaxe

Při psaní AS používáme tečkovou syntaxi, tedy symbol „.“ jako oddělovače. Tečka se při psaní využívá při definici cest k instancím objektů a při přiřazování vlastností a metod. Pokud vložíme do hlavní scény MC a pojmenujeme jej „animace“ na panelu vlastností „Properties“, můžeme se pak na tento klip odkazovat pomocí příkazu:

_root.animace;

Výraz „_root“ označuje hlavní scénu. Všechny pojmenované instance objektů, umístěné na hlavní scéně lze pomocí příkazu:

_root.NazevInstance;

zacílit a provádět s nimi další funkce.

Určitě se setkáme i s případem, kdy je jeden MC vložen do druhého a ten je umístěn na hlavní scéně. Budeme-li chtít zacílit vložený klip, musí být samozřejmě pojmenovaný a cesta k němu by vypadala následovně:

_root.PrvniKlip.VlozenyKlip;

Stejným způsobem se budeme odkazovat na případně další vložené klipy.

Tečkou se přiřazují i vlastnosti, proměnné a metody objektů.

Výraz:

pozicex = _root.animace._x;

znamená, že jsme do proměnné „pozicex“ vložili hodnotu x-ové souřadnice klipu pojmenovaném „animace“, který je umístěn na hlavní scéně.

Výraz:

promennaA = _root.animace.promennaB;

znamená, že jsme proměnné s názvem „promennaA“ přiřadili hodnotu proměnné „promennaB“, která je součástí MC, pojmenovaném „animace“.

Výraz:

_root.animace.gotoAndStop(5);

zase znamená, že se MC „animace“ má přesunout na 5. snímek a tam se zastavit.

Všimneme si, že je na konci řádku ve všech příkazech vždy uveden středník.

Relativní a absolutní cesta

Uvedené výrazy jsou příklady absolutních cest. Máme v nich „natvrdo“ určené cesty k MC. Často se ale setkáme s případy, kdy přesouváme a vnořujeme objekty do dalších. Pokud máme v některé části kódu uvedené absolutní odkazy, může vzniknout problém, kterému je lepší předcházet relativními odkazy.

V případě relativního odkazu záleží na úrovni, ze které se odkazujeme. K objektům, proměnným atd. na stejné úrovni (stejná časová osa MC) přistupujeme klasicky:

promennaA = promennaB;

Obě proměnné jsou na stejné úrovni, stačí je tedy uvést bez dalších výrazů.

Dejme tomu, že máme jeden MC, pojmenovaný „animace1“ vložený na hlavní scéně a v tomto MC je vložen další MC, pojmenovaný „animace2“. V MC „animace2“ máme proměnnou s názvem „promenna2“ a chceme, aby se její hodnota rovnala proměnné z animace do které je MC vložen. Do MC „animace2“ napíšeme tento výraz:

promenna2 = _parent.promenna1;

Výraz _parent určuje posun k nadřazenému MC, tedy k tomu, do kterého je animace vložena. Stejného výsledku bychom dosáhli výrazem:

promenna2 = _root.animace1.promenna1;

Vytvořili jsme tak absolutní cestu, která ovšem selže, pokud celý MC „promenna1“ začleníme do jiného klipu. Zůstala by tam absolutní cesta na proměnnou, která má již jiné umístění.

Následující schéma snad pomůže celou problematiku ujasnit:

instance objektu pojmenovaná „smajlík“ objekt obsahuje klipy „hlava“ a „oblicej“ objekt obsahuje proměnnou „promSmajlik“
instance objektu pojmenovaná „hlava“ objekt obsahuje kresbu hlavy objekt obsahuje proměnnou „promHlava“
instance objektu pojmenovaná „oblicej“ objekt obsahuje klipy „usta“ a „oci“ objekt obsahuje proměnnou „promOblicej“
instance objektu pojmenovaná „usta“ objekt s kresbou úst objekt obsahuje proměnnou „promUsta“
instance objektu pojmenovaná „oci“ objekt s kresbou očí objekt obsahuje proměnnou „promOci“

Celý objekt smajlíku je vložen na hlavní scéně.

Tabulka ukazuje příklady různých způsobů zacílení proměnných v jednotlivých klipech:

zacílení z objektu zacílení na proměnnou absolutní cesta relativní cesta
hlavní scéna promOci _root.smajlik.oblicej.oci.promOci smajlik.oblicej.oci.promOci
objekt „oci“ promOblicej _root.smajlik.oblicej.promOblicej _parent.promOblicej
objekt „oci“ promUsta _root.smajlik.oblicej.usta.promUsta _parent.usta.promUsta
objekt „oci“ promHlava _root.smajlik.hlava.promHlava _parent._parent. .hlava.promHlava
objekt „hlava“ promOci _root.smajlik.oblicej.oci.promOci _parent. oblicej.oci.promOci
objekt „oblicej“ promOci _root.smajlik.oblicej.oci.promOci oci.promOci

Z tabulky vidíme, že výraz _parent nás odkáže do nadřazeného klipu, ve kterém je vložen MC ze kterého se odkazujeme. Pokud chceme například přistoupit k proměnné „promOci“ objektu „oci“ z klipu „hlava“, musíme se nejprve dostat pomocí _parent do nadřazeného MC, kterým je v tomto případě objekt „smajlik“. Další část cesty je již snadná a postupuje se hierarchicky, podle vložených objektů.

Vkládání cest

Při psaní kódu nám vkládání cest k jednotlivým klipům usnadňuje tlačítko „Insert a target path“ v panelu akcí.

Obr. 9

Pokud na toto tlačítko klikneme, zobrazí se okno, ve kterém máme možnost vybrat klip, na který se chceme odkazovat. Můžeme si zde zvolit, zda chceme mít relativní nebo absolutní formát cesty.

Obr. 10

Pomocí tohoto okna si také můžeme snadno ověřit, zda máme pojmenované potřebné klipy. Pokud není klip pojmenován, objeví se pouze jeho originální název z knihovny symbolů v kulatých závorkách. Pokud budeme chtít tento objekt zacílit, zobrazí se varovné okno, které nás informuje, že objekt není pojmenován, a umožňuje nám jeho dodatečné pojmenování.

Obr. 11

V příštím díle si ukážeme jednoduchý příklad ovládání animací pomocí AS.