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(); |