V²uka Flash (10.)

Rozhodovacφ konstrukce a cykly

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.


Rozhodovacφ konstrukce

╚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.


If

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:

If

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ß.


Else

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.

Else

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!.


Else if

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.

Else if

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ß.
}



Switch

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:

Switch

JednotlivΘ hodnoty pro porovnßvßnφ p°idßvßme za p°φkazem case, kterΘ jsou ukonΦeny p°φkazem break:

Switch

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):

Switch

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:

Switch

V okΘnku Output uvidφte v²slednou Φßst (v²pis).


Cykly

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φ.


While

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:

While

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;
}


Do while

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:

Do while

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) 


For

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:

For

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;
}


For..in

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:

For

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


Break

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]);
}


Continue

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.

Petr Rympler