V dneÜnφm dφle budeme pokraΦovat v poznßvßnφ ActionScriptu. Ukß₧eme si, co jsou to rozhodovacφ konstrukce a vysv∞tlφme si pojem cyklus.
╚astokrßt budeme pot°ebovat provΘstu v ActionScriptu akci, kterß se vykonß jen tehdy, pokud bude spln∞na urΦitß podmφnka. Pomocφ t∞chto rozhodovacφch konstrukcφ m∙₧eme vytvo°it komplexnφ aplikace, jen₧ budou reagovat na ka₧dou vzniklou situaci.
Umφst∞nφ v knihovn∞: Actions -> Conditions/Loops.
Jednß se o zßkladnφ rozhodovacφ konstrukci, kterou m∙₧eme pou₧φt. V p°φpad∞, ze v²sledek vrßtφ hodnotu true (pravda), tak se provede k≤d uvnit° rozhodnovacφ konstrukce.
M∙₧eme nastavovat nßsledujφcφ vlastnosti:
Jako p°φklady si m∙₧eme uvΘst:
// Vytvo°φme prom∞nnou x, kterß mß hodnotu 20. var x = 20; // Rozhodovacφ konstrukce, kterß posoudφ, // zda hodnota prom∞nnΘ x je rovna 20. if (x == 20) { // Prove∩ n∞jakou akci }
Jak si m∙₧ete vÜimnout, tak se jednß o zßkladnφ srovnßvacφ operßtory (==, >=,<=,..), kterΘ urΦit∞ ka₧d² z nßs znß.
Umφst∞nφ v knihovn∞: Actions -> Conditions/Loops.
V p°φpad∞, ₧e bude podmφnka vracet hodnotu false (nepravda - podmφnka nebude spln∞na) m∙₧eme vyu₧φt tΘto alternativy, kterß zajistφ provedenφ k≤du.
Jako p°φklady si m∙₧eme uvΘst:
// Vytvo°φme prom∞nnou x, kterß mß hodnotu 20. var x = 20; // Rozhodovacφ konstrukce, kterß posoudφ, // zda hodnota prom∞nnΘ x je rovna 20. if (x == 20) { // Prove∩ n∞jakou akci (true) } else { // Prove∩ n∞jakou akci (false) }
Praktickou ukßzku nalezneme v porovnßvßnφ v∞ku:
// Vytvo°φme prom∞nnou vek, kterß mß hodnotu 20. var vek = 20; // Rozhodovacφ konstrukce, kterß posoudφ, // zda hodnota prom∞nnΘ vek je rovna 20. if (vek == 20) { // Mß 20 let! } else { // Nemß 20 let! }
Jeliko₧ hodnota prom∞nnΘ je 20, tak bude proveden k≤d, kter² se nachßzφ u komentß°e // Mß 20 let!.
Umφst∞nφ v knihovn∞: Actions -> Conditions/Loops.
V p°φpad∞, kdy budeme chtφt nap°φklad porovnat n∞kolik hodnot prom∞nnΘ, m∙₧eme pou₧φt tuto konstrukci.
Jako p°φklady si m∙₧eme uvΘst:
// Vytvo°φme prom∞nnou x, kterß mß hodnotu 20. var x = 20; // Rozhodovacφ konstrukce, kterß posoudφ, // zda hodnota prom∞nnΘ x je rovna 10, 20 a jinΘ hodnot∞. if (x == 10) { // Hodnota prom∞nnΘ x je 10. } else if (x == 20) { // Hodnota prom∞nnΘ x je 20. } else { // Hodnota prom∞nnΘ x je jinß. }
Umφst∞nφ v knihovn∞: Actions -> Conditions/Loops.
Tato °φdφcφ struktura je velice podobnß konstrukci If..Elseif...Else, m∙₧ete ji vyu₧φt nap°φklad tehdy, kdy₧ budete chtφt porovnat hodnotu n∞jakΘ prom∞nnΘ.
M∙₧eme nastavovat nßsledujφcφ vlastnosti:
JednotlivΘ hodnoty pro porovnßvßnφ p°idßvßme za p°φkazem case, kterΘ jsou ukonΦeny p°φkazem break:
P°i porovnßvßnφ m∙₧eme takΘ vyu₧φt p°φkaz default, kter² zajistφ vykonßnφ zvolΘho k≤du, kdy₧ se nebude shodovat ani jedna hodnota (za p°φkazem default se neuvßdφ p°φkaz break):
Jako p°φklad si m∙₧eme uvΘst konstrukci, kterß porovnß hodnotu prom∞nnΘ hodnota, a v p°φpad∞ ₧e nebude vyhovovat ₧ßdnß podmφnka, tak se provede Φßst uvedenß za p°φkazdem default:
V okΘnku Output uvidφte v²slednou Φßst (v²pis).
Ne jednou nastane p°φpad, kdy budete chtφt, aby skript provßd∞l urΦitou akci dokud bude platit podmφnka. V tΘto situaci vyu₧ijete cykl∙, kterΘ tuto vlastnost umo₧≥ujφ.
Umφst∞nφ v knihovn∞: Actions -> Conditions/Loops.
Cyklus while je jeden z nejpou₧φvan∞jÜφch cykl∙. Cyklus bude provßd∞t zvolenΘ p°φkazy do tΘ doby, dokud bude podmφnka rovna boolean hodnot∞ TRUE.
M∙₧eme nastavovat nßsledujφcφ vlastnosti:
Na p°φklad∞ si ukß₧eme cyklus, kter² bude zv∞tÜovat hodnotu prom∞nnΘ x o 30 do tΘ doby, dokud nebude hodnota prom∞nnΘ x rovna 360.
// Vytvo°φme prom∞nnou x, kterß mß hodnotu 0. var x = 0; // V²sledn² cyklus. while (x <= 360) { x += 30; }
Umφst∞nφ v knihovn∞: Actions -> Conditions/Loops.
Cykly do-while a While jsou si velmi podobnΘ, ale rozdφl je v tom, ₧e podmφnka je porovnßvßna a₧ na konci skriptu. Dφky tΘto vlastnosti budou p°φkazy (akce) vykonßny alespo≥ jednou.
M∙₧eme nastavovat nßsledujφcφ vlastnosti:
Na p°φklad∞ si ukß₧eme cyklus, kter² bude zv∞tÜovat hodnotu prom∞nnΘ x o 30 do tΘ doby, dokud nebude hodnota prom∞nnΘ x rovna 360.
// Vytvo°φme prom∞nnou x, kterß mß hodnotu 0. var x = 0; // V²sledn² cyklus. do{ x += 30; }while (x <= 360)
Umφst∞nφ v knihovn∞: Actions -> Conditions/Loops.
Cyklus for se takΘ °adφ mezi jeden z nejpou₧φvan∞jÜφch druh∙ cykl∙. Na zaΦßtku provßd∞nφ cyklu se urΦφ (vyhodnotφ) poΦßteΦnφ hodnota (Init). Nßsledn∞ se vyhodnotφ podmφnka (Condition) a pokud vracφ (stejn∞ jako u p°edeÜl²ch cykl∙) hodnotu TRUE, provedou se p°φkazy (akce). Na konci ka₧dΘ iterace se provede poslednφ v²raz (Next).
M∙₧eme nastavovat nßsledujφcφ vlastnosti:
Na p°φklad∞ si ukß₧eme cyklus, kter² bude hodnotu prom∞nnΘ x nßsobit o 30 do tΘ doby, dokud nebude hodnota podmφnky menÜφ ne₧ 10.
// Vytvo°φme prom∞nnou x, kterß mß hodnotu 0. var x = 0; // V²sledn² cyklus. for (i=0; i<=10; i++) { x = i * 30; }
Umφst∞nφ v knihovn∞: Actions -> Conditions/Loops.
Tento cyklus je velice podobn² cyklu foreach, kter² naleznete v jazycφch jako je PHP, C#, atd. Pomocφ toho cyklu m∙₧eme prochßzet jednotlivΘ objekty a pole a vypisovat jejich vlastnosti a prvky.
M∙₧eme nastavovat nßsledujφcφ vlastnosti:
Na p°φklad∞ si ukß₧eme tento cyklus, kter² "projde" vÜechny vlastnosti a vypφÜe je do okna pro lad∞nφ (debug).
// Vytvo°φme objekt auto a nastavφme vlastnosti. var auto = new Object(); auto.znacka = "Peugeot"; auto.rychlost = 190; auto.cena = 200000; // V²sledn² cyklus. for (prvek in auto) { trace(prvek+"-"+auto[prvek]); }
Tento cyklus vypφÜe nßsledujφcφ data:
cena-200000 rychlost-190 znacka-Peugeot
Umφst∞nφ v knihovn∞: Actions -> Conditions/Loops.
P°φkaz break m∙₧ete vyu₧φt tehdy, pokud budete z n∞jakΘho d∙vodu chtφt ukonΦit provßd∞nφ cyklu.
// Vytvo°φme objekt auto a nastavφme vlastnosti. var auto = new Object(); auto.znacka = "Peugeot"; auto.rychlost = 190; auto.cena = 200000; // V²sledn² cyklus. for (prvek in auto) { // V p°φpad∞, ₧e bude mφt prvek hodnotu "rychlost", // tak se Φinnost cyklu ukonΦφ. if (prvek == "rychlost"){ break; } trace(prvek+"-"+auto[prvek]); }
Umφst∞nφ v knihovn∞: Actions -> Conditions/Loops.
P°φkaz continue m∙₧ete vyu₧φt tehdy, pokud budete z n∞jakΘho d∙vodu chtφt ukonΦit provßd∞nφ aktußlnφ iterace cyklu.
// Vytvo°φme objekt auto a nastavφme vlastnosti. var auto = new Object(); auto.znacka = "Peugeot"; auto.rychlost = 190; auto.cena = 200000; // V²sledn² cyklus. for (prvek in auto) { // V p°φpad∞, ₧e bude mφt prvek hodnotu "rychlost", // tak se Φinnost cyklu ukonΦφ. if (prvek == "rychlost"){ continue; } trace(prvek+"-"+auto[prvek]); }
Pro tento dφl to bude vÜe. V p°φÜtφm dφlu budeme pokraΦovat v ActionScriptu.