Uživatelské nástroje

Nástroje pro tento web


vyuka:forcyklup_statickepromenne

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

Třídy

u statické třídy nejde vytvořit instance a nejde ji měnit

Statické proměnné

- je společná pro všechny instance dané třídy nedostáváme se k ní přes jméno instance, ale přes jméno třídy

static var jmeno:Number

nedostáváme se k ní přes jméno instance, ale přes jméno třídy pokud ji chceme vypsat pomocí trace:

trace(strilecka.pocet_zasahu);

Příklad - Střílečka balonků

- využití statických proměnných

- vužití externí třídy strilecka.as pro movieclipy - balonky a motýly

package  {
 
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
 
	public class strilecka extends MovieClip 
		{
			public static var pocet_zasahu:Number = 0;  //statická proměnná - pocet_zasahu
			public static var pocet_minuti:Number = 0;  //statická proměnná - pocet_minuti
 
			public function strilecka() 
				{
				this.addEventListener(MouseEvent.MOUSE_OVER, zasah)
				}
 
			private function zasah(e:MouseEvent) //při zásahu hodí movieclip  balonku na první frame a přidá +1 k počtu zásahů
				{
				this.gotoAndPlay(1);
				pocet_zasahu+=1;
				trace("Zasahu"+strilecka.pocet_zasahu); //pokud chceme vypsat v Outputu počet zásahů
				}
		}
 
	}

na konci vnitřní animace MovieClipů (motýli, balonky) je vždy +1 k proměnné počet minutí

strilecka.pocet_minuti+=1;
("Minuti"+strilecka.pocet_minuti); //pokud chceme vypsat v Outlinu počet minutí

Pro přehrání obsahu potřebujete Adobe Flash Plugin.

Zdrojové soubory příkladu: strilecka.zip

vyuka/forcyklup_statickepromenne.txt · Poslední úprava: 2014/05/02 08:35 autor: verca