Uživatelské nástroje

Nástroje pro tento web


vyuka:9._dynamika_zalozena_na_case_vyuziti_funkce_setinterval

Dynamika založená na čase, využití funkce setInterval

Nastavení časovače

Funkce setInterval nastavuje vnitřní časovače, které v nastaveném intervalu (zadaném v milisekundách, tj. tisícinách vteřiny) zařídí spuštěná požadované funkce.

Návratovou hodnotou funkce je pořadové číslo časovače. Toto číslo je pak argumentam funkce clearInterval, kterou časovač odstraníme.

Tak např. chceme aby se čtyři krát za vteřinu volala funkce1(). Protože jedna vteřina je tisíc milisekund, chceme aby se tato funkce volala jednou za 225 milisekund (1000/4=225).

Budeme si pamatovat číslo časovače v proměnné poradovéCisloCasovace.

Argumentem funkce setInterval je název funkce (jako řetězcová proměnná - musíme ji proto dávat v uvozovkách“ a počet milisekund, na který nastavíme časovač pro periodické volání funkce.

poradoveCisloCasovace=setInterval("funkce1",225);

Pokud voláme funkci uvnitř třídy, je prvním argumentem odkaz na příslušný objekt. Takže např. když chceme aby uvnitř třídy funkce setInterval periodicky volala metodu funkce1() tak prvním argumentem bude this - tj. odkaz na vlastní třídu v níž je definována metoda funkce1.

poradoveCisloCasovace=setInterval(this,"funkce1",225);

Zrušení časovače

Zrušení časovače se provádí zavoláním funkce clearInterval jejímž argumentem je číslo časovače. Pokud jsme si např uložili číslo časovače do proměnné poradoveCisloCasovace pak bude zrušení časovače vypadat takto:

clearInterval(poradoveCisloCasovace);

Celé to funguje jak ukazuje následující pbrázek (klikejte na příslušné nadpisy):

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

Úkol

Vytvořte movieClip kde můžete zrychlovat nebo zpomalovat jeho chování (rychlost šlapání cyklisty na kole, rychlost otáčení větrného mlýna apod). Zrychlení nebo zpomalování ovládejte pomocí tlačítek zrychlit či zpomalit.

Nápověda: metoda nextFrame() třídy MovieClip posune a zastaví hlavu o jedno políčko. Tuto metodu můžete volat pomocí setInterval s nastavenou dobou periodického volání. Je možné využít i funkci updateAfterEvents(), volanou po každém zavolání nextFrame() která zajistí okamžité překreslení obrazovky nezávisle na nastavené frakvenci přehrávání movieClipu.

Například u movieClipu Cerpadlo budeme mít následující definici třídy, která bude mít metody pomalu(), normalne() ,rychle() a zastavit(). Při Protože používáte nextFrame nezapomeňte na posledním framu u MovieClipu Cerpadlo vložit příkaz přechodu snímací hlavy zpět na první snímek gotoAndStop(1)

class Cerpadlo extends MovieClip {
	var cisloStopek:Number = 0;
	function Cerpadlo() {
		stop();
	}
	function naDalsi() {
		//trace("dale");
		this.nextFrame(); 
		updateAfterEvent();
	}
	function pomalu() {
		////trace("pomalu");
		clearInterval(cisloStopek);
		cisloStopek = setInterval(this, "naDalsi", 100);
	}
	function normalne() {
		//trace("normalne");
		clearInterval(cisloStopek);
		cisloStopek = setInterval(this, "naDalsi", 30);
	}
	function rychle() {
		//trace("rychle");
		clearInterval(cisloStopek);
		cisloStopek = setInterval(this, "naDalsi", 6);
	}
	function zastavit() {
		//trace("zastavit");
		clearInterval(cisloStopek);
	}
}

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

zazipovaný zdrojový text příkladu

vyuka/9._dynamika_zalozena_na_case_vyuziti_funkce_setinterval.txt · Poslední úprava: 2007/04/29 21:20 autor: kofranek