![]() ![]() ![]() ![]() ![]()
Martin Hozík |
Podmínky a smyčkyPodmínky a smyčky umožňují ovlivňovat sled provádění příkazů na základě nějaké skutečnosti. Příkazy spojené s podmínkami a smyčkami lze vkládat v sekci Actions - Condition/Loops. PodmínkyPodmínka je útvar, který kontroluje pravdivost nějaké skutečnosti a podle toho buď provede nebo neprovede příkazy napsané uvnitř (případně vykoná jiné). Nejlepší asi bude vysvětlit si vše na následujícím příkladu: if (vyhra == 0 && hotovost < 100) { gotoAndPlay(10); } Tento zápis znamená, že pokud (if) proměnná "vyhra" bude rovna nule a zároveň proměnná "hotovost" bude menší než 100 provedou se příkazy uvnitř složených závorek (v našem případě "běž na snímek 10"). Pokud nebude splněna podmínka uvnitř kulatých závorek, nic se nestane a předchozí tři řádky jakoby neexistovaly. Jiná možnost: if (vyhra == 0 && hotovost < 100) { gotoAndPlay(10); } else { gotoAndPlay(1); } Zde nám přibylo ještě slůvko "else" (=jinak). Pokud není splněna podmínka, vykonají se příkazy uvnitř složených závorek za příkazem else (v našem případě "běž na snímek 1"). Ještě jiná možnost: if (vyhra == 0 && hotovost < 100) { gotoAndPlay(10); } else if (vyhra == 50) { gotoAndPlay(1); } Příkaz "else if" (=jinak pokud) je podobný příkazu "else",
ale příkazy uvnitř se vykonají jen v případě, že podmínka "if" splněna
nebude a naopak podmínka SmyčkySmyčka také kontroluje pravdivost zapsaného výrazu. Pokud je zápis pravdivý, provedou se akce uvnitř smyčky, ale narozdíl od podmínky nepokračuje vykonávání ostatních skriptů, ale znovu se zjišťuje pravdivost výrazu. Pokud je výraz nepravda, pokračuje vykonávání příkazů za smyčkou. Existuje víc druhů smyček:
Někdy potřebujeme provádění smyčky přerušit, nebo naopak vrátit zpět na začátek (zkontrolovat pravdivost výrazu). Pro tyto účely existují příkazy Break (přerušení) a Continue (zpět na začátek). Viz příklad: i = 0; while (limit = 0) { if (i >= 10) { break; } i++; } Tento zápis znamená, že pokud se proměnná "limit" bude rovnat nule, bude se opakovat smyčka, uvnitř které je podmínka "if" a příkaz zvyšující proměnnou "i" o jedna. Pokud proměnná "i" dosáhne hodnoty 10, vykoná se příkaz break a smyčka se přeruší. ProblémPředchozí příklady ve vás možná evokovaly pocit, že lze vytvořit smyčku, která by stále dokola kontrolovala nějakou skutečnost a podle toho prováděla nebo neprováděla akce: while (skore > 0){ buton01.enabled = true; } buton01.enabled = false; Tento způsob použití smyčky sice není v rozporu se správnou syntaxí, ale v praxi je nepoužitelný. Je totiž nutné si uvědomit jednu důležitou skutečnost - všechny příkazy definované snímkům a objektům jsou provedeny po splnění události (MouseOver, KeyDown, ...) v jeden okamžik! Pokud bychom tedy spustili animaci s předchozí smyčkou, bylo by provedeno v jeden moment nekonečně mnoho operací, což nelze. Abych to shrnul - každá smyčka musí mít konečný počet cyklů (ať už pomocí proměnné, nebo příkazu "For"). Switch (přepínač)Switch je zvláštní typ elementu ovlivňujícího tok příkazů, který se objevil ve verzi MX (6). Do jisté míry by se dal přirovnat k podmínce IF. Switch obsahuje několik bloků příkazů, které jsou pojmenovány (1, 2,..). Pokud switchi definujeme jako argument jméno bloku, vykoná příkazy uvnitř. Viz příklad:
abc = 2; switch (abc) { case 1 : gotoAndPlay(1); break; case 2 : gotoAndPlay(5); break; case 3 : gotoAndPlay(10); break; } Zde je zde je definován argument jako proměnná "abc". Vložená hodnota se nyní porovná s názvy bloků a pokud se název shoduje s jedním z bloků, vykonají se příkazy uvnitř. V našem případě gotoAndPlay(5);. Následuje příkaz break;, který ukončí vykonávání ostatních příkazů - jinak by pokračoval příkaz gotoAndPlay(10); Důležité! Aby se vykonaly příkazy v bloku kódu, musí být
Názvy bloků nemusí být jenom čísla, může to být i textový řetězec (string) - viz příklad níže
Pokud nebude striktně souhlasit argument s názvem jednoho z bloků, bude pokračovat vykonávání příkazů za přepínačem. Pokud bychom však chtěli, aby se i při nerovnosti argumentu a názvu bloku vykonaly nějaké příkazy, musíme použít blok s názvem default: abc = "blablablabla"; switch (abc) { case "prvni": gotoAndPlay(1); break; case "druhy": gotoAndPlay(5); break; default: Stop(); break; }Jak je vidno, argument nesouhlasí s žádným blokem a proto budou vykonány příkazy uvnitř bloku "default"- v našem případě Stop(); |
![]() |
![]() |