Cykly a jejich využití

Cyklus je opakující se sekvence. Cyklus spustí inicializace, opakování probíhá dokud jsou splněné podmínky cyklu. Je možné nastavit, aby se tato část programu několikrát opakovala.

Cyklus for

Projde cyklickyým kolotočem definovaným počtem kroků, závislým na tom, zda řídící proměnná (v dané příkladě i) splňuje zadanou podmínku (i<25). Na konci každého průchodu se provede příkaz měnící řídící proměnnou – v daném příkladě ji zvětší o jedničku (i++)

for (var i:Number=0;i<25;i++){ // (i:Number=0) inicializace - nastavíme proměnnou i, která je typu Number ; (i<25) podmínka - dokud i je menší než 25; (i++) co se má stát s proměnnou po proběhnutí jednoho cyklu - i se přičte 1 (zapisuje se jako ++)
      //tělo cyklu
      trace(i); //poprvé se vypíše 1, podruhé vypíše 2, potřetí 3, do té doby než i dosáhne čísla 25 - poslední vypsané číslo bude 24
}

For cyklus se nedá využít k animaci pohybu – protože se actionscript nejprve plně vykoná a až pak se vykreslí obraz. V tomto případě by se tedy vykonal cyklus několikrát, dokud by byly splněny podmínky a zastavil by se až ve chvíli, kdy by přestaly být podmínky spněny a animace by se vykreslila jen na posledním poli. Využití for cyklu – generování čísel.

– např. ve fotogalerii pro změnu měřítka obrázků – stačí iniciovat for cyklus jen jednou a on se pak vykoná u všech fotografií, které se pak všechny načtou v požadované velikosti.

Cyklus while

Na začátku cyklu se otestuje podmínka – když je platná, vstoupí se do cyklu, projede se cyklem a opět se na začátku testuje podmínka. Cyklem se prochází tak dlouho dokud podmínka platí. (V daném příkladu dokud je i<25):

var i:Number=0;
while (i<25){ 
  //tělo cyklu
  trace(i);
  i++;
}

Cyklus do..while

Na začátku se vždy vstoupí do cyklu, na konci cyklu se testuje zda platí nějaká podmínka – např zda i<25. Pokud platí, jsme stále v cyklu a cyklus opakujeme. Opakujeme ho tak dlouho, dokud podmnínka platí.

var i:Number=0;
do{ 
  //tělo cyklu
  trace(i);
  i++;
} while (i<25);

Výskok z těla cyklu pomocí break

Příkaz break vede k okamžitému výskoku z cyklu – obvykle se spojen s nějakou podmínkou:

var i:Number=0;
do{ 
  //tělo cyklu
  trace(i);
  if (i==n){
     break;
    //když hodnota proměnné i se rovná hodnotě proměnné n,
    // předčasně vyskočíme z cyklu
  }
  i++;
} while (i<25);

Skok na začátek cyklu pomocí continue

Pokud chceme nějaké příkazy cyklu denodělat až do konce a skočit na nové kolo cyklu, použijeme příkaz continue. Tak např. pokud se proměnná i rovná nule, jdeme opět na začátek cyklu a nepokračujeme v cyklu dále, a vyhneme se tak dělení nulou v příkazu 100/i:

for (var i:Number=-10;i<25;i++){
      //tělo cyklu
       if (i==0){
         continue;
      }
      trace(100/i);
}

Jednoduchý příklad T. Kripnera

Z adresáře /img/ chceme načíst obrázky /o1.jpg/ až /o10.jpg/ a zobrazit je ve formě pásu náhledů. Pro jednoduchost předpokládámě, že obrázky jsou široké 50 pixelů. Použijeme cyklus a v každém průchodu cyklem vytváříme ve stringové proměnné filename názvy obrázků (odo1.jpg do o10.jpg). Vytvoříme si ref_mc jako prázdný movieClip a na něj pak pověsíme pomocí loadMovie příslušný obrázek. Plnou cestu k němu vytvoříme ze stringu „img/“ a obsahu proměnné filename. Cyklem for projdeme desetkrát:

for (i=1; i<=10; i++) {
	filename = "o" + i.toString + ".jpg";
	ref_mc = this.createEmptyMovieClip(filename, this.getNextHighestDepth());
	ref_mc._x = (i-1) * 50;
	ref_mc.loadMovie("img/" + filename);
}

zdrojový text příkladu


Posted

in

by

Tags: