Uživatelské nástroje

Nástroje pro tento web


vyuka:3._sekvence_prace_flash_playeru_posloupnost_inicializace_a_vykreslovani_objektu_vyuziti_funkce_onenterframe

Sekvence práce flash playeru, posloupnost inicializace a vykreslování objektů, využití funkce onEnterFrame

Platí pro starší flash playery:

  1. Flash player nejdříve vykoná všechny skripty obsažené v prvním framu. Ale pozor - pokud se skripty odvolávají na nějaké vložené movieklipy, akce se neprovede, protože vložené movieclipy nejsou ještě inicializovány. Takže např. když chceme z objektu zavolat funkci lez() definovanou v instanci snek_mc jako snek_mc.polez() - nic se nestane. Pokud to ale uděláme v druhém framu (když se v prvním už instance snek_mc inicializovala, funkce ve vnořeném klipu se vykoná.
  2. Postupně se vykonají skripty ve vnořených movieklipech.
  3. Políčko je připraveno k vykreslení - generuje se událost onEnterFrame a pokud této události je přiřazena nějakí obslužná funkce - tato funkce se vykoná.
  4. Vykreslí se políčko.
  5. (tento problém se řešil dvousnímkovou časovou osou)

Platí pro nové flash playery (10 a výš):

  1. Všechny movieclipy a vnořené movieclipy se inicializují (jejich jména, nastaví se jejich hodnoty). Nevykreslují se, ale provede se inicializace scény.
  2. Pak se vykoná actionscript, který je na prvním časovém snímku.
  3. Následuje vyvolání všech actioncriptů ve vnořených movieclipech.
  4. Scéna je připravena na vykreslení (ale ještě není vykreslená - jsou inicializované prvky, vykonaný actionscript v movieclipech) - > vyvolá se událost ENTER_FRAME
  5. Nyní se vykreslí scéna

Využití funkce onEnterFrame

Platí pro starší flash playery: často se tato funkce využívá pro inicializaci - vnořené movieklipy jspou již vytvořeny, proto můžeme volat jejich funkce a můžeme se na ně odvolávat. Posledním příkazem této funkce je přiřazení onEnterFrame=null, což znamená, že před příštím vykonání funkce se tato funkce už nevykoná - a tedy funkce onEnterFrame se vykoná jenom jednou.

onEnterFrame=function(){
   //volám inicializační funkci init, kterou si nadefinuji někde vedle
   init();
   //nakonec označím funkci onEnterFrame jako prázdnou, takže se příšt+ě už nevykoná
   onEnterFrame=null;
}

Platí pro nové flash playery (10 a výš): Využívá se, pokud chceme spustit funkci při vykreslení každého snímku.

Jednoduchý příklad T. Kripnera

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

Využití funkce onEnterFrame pro pohyb po dráze nějakého objektu a využítí podmínek pro zastavení nebo změnu pohybu u pohybujícího se objektu.

Chceme např., aby se instance MovieClipu kolo_mc pophybovala po ose x od souřadnice 50 do souřadnice 199. V obslužné funkci onEnterFrame se před každým vykreslením políčka zvětší pozice x o jedničku. Jakmile pozice x dosáhne 200, změní se hodnota x-ové souřadnice opět na 50:

this.onEnterFrame = function() {
	kolo_mc._x += 10;
	if (kolo_mc._x > 200) {
		kolo_mc._x = 50;
	}
} 

zdrojový text příkladu

vyuka/3._sekvence_prace_flash_playeru_posloupnost_inicializace_a_vykreslovani_objektu_vyuziti_funkce_onenterframe.txt · Poslední úprava: 2012/05/18 09:30 autor: verca