Sekvence
Blok kódu, který se vykonává postupně.
Podmínky a jejich využití
Velmi jednoduchý způsob, jak ovládat děj pomocí actioncriptu. Vykoná nějakou funkci, jen pokud je splněná určitá podmínka.
Podmínky slouží k větvení programu.
Jednoduchá podmínka
Podmínka (if) je nejednodušší z podmínek. Pokud je splněná podmínka, něco se vykoná. (Pokud podmínka splněna není, nevykoná se nic.)
syntaxe:
if (podminka) { //provedou se příkazy, které se provedou když platí podmínka prikazy; }
další možný způsob zápisu:
if (podminka) prikazy; //provedou se příkazy, které se provedou když platí podmínka
Podmínka s alternativou
Pokud je splněná podmínka, něco se vykoná. Pokud není splněna, vykoná se něco jiného.
syntaxe:
if (podminka) { //provedou se příkazy, které se provedou když platí podmínka prikazy; } else { //provedou se alternativní příkazy, které se provedou když neplatí podmínka alternativniPrikazy; }
Podmínka s více alternativami
syntaxe:
if (Podmínka1) { // co se má vykonat pokud je podmínka 1 splněna } else if (Podmínka2) { // co se má vykonat pokud je podmínka 2 splněna } else { // co se má vykonat pokud podmínka 1 ani podmínka 2 neplatí }
další příklad:
if (podmínka1) { //provedou se příkazy, které se provedou když platí podmínka1 prikazy1; } else if (podmínka2) { //provedou se alternativní příkazy, které se provedou když neplatí podmínka2 alternativniPrikazy2; } else if (podmínka3) { //provedou se alternativní příkazy, které se provedou když neplatí podmínka3 alternativniPrikazy3; } else { //provedou se alternativní příkazy, které se provedou když neplatí žádnáí z předchozích podmínek alternativniPrikazy3; }
Co může být podmínka?
Jakýkoliv logický výraz. Můžeme porovnávat, hodnoty proměnné.
Operátory v podmínkách
> //je větší než => //je rovno nebo větší než < //je menší než =< //je rovno nebo menší než == //je rovno != //je různé, nerovná se
Vždy je definovaná levá a pravá strana
Operátory při práci s dvěma a více podmínkami
|| //nebo - je-li splněna podmínka 1 nebo podmínka 2, funkce se vykoná && //zároveň - jsou-li splněny obě podmínky, funkce se vykoná Např: //jestliže je splněna podmínka 1 a zároveň podmínka 2 if (Podmínka 1) && (Podmínka 2){ // co se má vykonat pokud je podmínka splněna } else { // co se má vykonat pokud podmínka neplatí } //jestliže je splněna podmínka 1 a zároveň podmínka 2 //jestliže je splněna podmínka 1 nebo podmínka 2 if (Podmínka 1) || (Podmínka 2){ // co se má vykonat pokud je podmínka splněna } else { // co se má vykonat pokud podmínka neplatí } //jestliže je splněna podmínka 1 a zároveň podmínka 2
Vnořené podmínky
Podmínka v sobě může mít jakýkoliv kód, i další podmínku. Podmínky mohou být takto hieraticky vložené.
Např.
if (Podmínka) { if (Podmínka) { // co se má vykonat pokud je podmínka splněna } else { // co se má vykonat pokud podmínka neplatí } } else { // co se má vykonat pokud podmínka neplatí }
Příklad podmínky
Movie clip „kostka“ má metodu „nastavBarvu(jakou), která přepíná zobrazení kostky podle hodnoty předávané parametrem jakou. Když je hodnota nulová, zobrazí se červená kostička, když se jakou rovná jedné, zobrazí se modrá, když je parametrem jakou předávaná hodnmota 2, zobrazí se zelená kostička, když je předávaná hodnota 3, zobrazí se žlutá a když bude jakékoli jiné číslo, zobrazí se červená kostka:
V movie clipu Kostka je naprogramována funkce nastavBarvu, která nastavuje snímací hlavu v MovieClipu na snímky označené „Cervená“, „Modra“ Zelena“ a „Cervena“ podle hodnoty předávané v parametru jakou.
function nastavBarvu(jakou:Number) { if (jakou == 0) { this.gotoAndStop("Cervena"); } else if (jakou == 1) { this.gotoAndStop("Modra"); } else if (jakou == 2) { this.gotoAndStop("Zelena"); } else if (jakou == 3) { this.gotoAndStop("Zluta"); } else { this.gotoAndStop("Cervena"); } }
Zdrojový kód příkladu Kosticky001
časté chyby: nezapomeňte, že při testování rovnosti (zda hodnota v jakou se rovná zadané hodnotě) musíte napsat dvěma rovnítkami ==.Pokud například napíšete if (jakou=2) editor vás neupozorní na chybu – výsledek přiřazení bude hodnota která se přiřazuje, takže v případě if (jakou=2) to bude stejné jako kdybyste napsali if (2). V podmínce se nula vyhodnocuje jako false a jakákoliv nenulová hodnota se vyhodnocuje jako true, podmínka if (jakou=2) se vyhodnotí jako pravdivá, provedou se proto vložené příkazy a program se bude chovat „podivně“.
Přepínač
Pokud se rozhodujeme mezi podmínkami na základě toho, že nějaká řídíácí proměnná může nabývat hodnot nějakých konstant, pak můžeme zapsat podmínku jako přepínač:
switch (řídící_proměnná) { case konstanta1 : //provede se když řídící_proměnná==konstanta1; příkazy1; break; case konstanta2 : //provede se když řídící_proměnná==konstanta2; příkazy2; break; case konstanta3 : //provede se když řídící_proměnná==konstanta3; příkazy3; break; }
V přepínači se testuje hodnota obsažená v řísící proměnné, pokud se tato hodnota rovná některé z nabízených konstant, pak se provedou příkazy uvedené v přepínači za case konstanta:. Na konci nezapomeňte vždy napsat break.
Pokud chceme, aby se proivedly nějaké příkazy v případě, že hodnota přepínače se nebude rovnat žádné z uvedených konstant, zapíšeme blokdefault:
switch (řídící_proměnná) { case konstanta1 : //provede se když řídící_proměnná==konstanta1; příkazy1; break; case konstanta2 : //provede se když řídící_proměnná==konstanta1; příkazy2; break; case konstanta3 : //provede se když řídící_proměnná==konstanta1; příkazy3; break; default : //provede se když řídící_proměnná //nerovná žádné z nabízených možností; příkazyImplicitní; }
příklad:
Ptorože v předchozím příkladu je ve funkci nastavBarvu(jakou) hodnota parametru předávána jako konstanta, můžeme v této funkci místi alternativních bloků if..then..else využít přepínač:
Zdrojový kód přikladu kosticky002
function nastavBarvu(jakou:Number) { // přepínač switch (jakou) { case 0 : this.gotoAndStop("Cervena"); break; case 1 : this.gotoAndStop("Modra"); break; case 2 : this.gotoAndStop("Zelena"); break; case 3 : this.gotoAndStop("Zluta"); break; default : this.gotoAndStop("Cervena"); } }
Jednoduchý příklad Tomáše Kripnera: Test dělitelnosti
Vytvořte test, který na stisk tlačítka ze vstupního textového pole (/in_txt/) přečte číslo a otestuje, zda je dělitelné třemi, výsledek pak napíše do výstupního textového pole /text_out/.
Zíkladem je funkce jeDelitelne3(_in):Boolean která ze vstupního parametru _in načte číslo a otestuje zda výsledek dělení (_in/3) je beze zbytku, tj. zda se rovná výsledku, který zaokrouhlíme dolů (pomocí funkce Math.floor). Funkce vrací logickou hodnotu (true nebo false).
Tlačítko test_btn reaguje na stisk obslužnou funkcí, která přečte hodnotu ve vstupním textovém poli in_txt a předhodí ho funkci jeDelitel. Na základě toho, co funkce vrátí (pravdivostní hodnotu true nebo false) se do výstupního textového pole zapíše výsledek:
test_btn.onRelease = function() { if (jeDelitelne3(in_txt.text)) { out_txt.text = "je dělitelné 3"; } else { out_txt.text = "není dělitelné 3"; } } function jeDelitelne3(_in):Boolean { if ((_in/3) == Math.floor(_in/3)) { return true } else { return false } }