Události:

Vnímáme v zásadě dva druhy událostí: on() a onClipEvent().

Události typu on()

Nejdříve si osvojíte první typ událostí. Události musí být vždy vloženy do nějakého symbolu - buď domovie clipu nebo do buttonu. V žádném případě nemůžete událost nacpat do keyframu na časové ose, neboť události on() se spuštějí určitou činností myši a tak docela těžko v animaci kliknete na sedmnáctý snímek animace, kde máte nějakou událost. Pokud se přeci jen pokusíte umístit událost do časové osy, Flash vám zařve a vyhodí chybu. A teď již k jednotlivým událostem:

událost kdy se spustí
on (press) {příkazy} příkazy v závorkách se provedou po stisknutí levého tlačítka myši na objekt či tlačítko
on (release) příkazy se provedou po kliknutí na tlačítko a následném odkliknuti
on (releaseOutside) událost se spustí když kliknete na tlačítko a odkliknete mimo tlačítko
on (rollOver) příkazy se provedou, když kurzor myši přejede přes daný objekt
on (rollOut) příkazy se provedou, když kurzor opustí určený objekt
on (dragOver) příkazy se provedou když přes tlačítko přejedete myší se stisknutým tlačítkem
on (dragOut) příkazy se provedou, když kliknete na tlačítko a přesunete kurzor mimo tlačítko
on(keyPress "<enter>") příkazy se provedou po stiskuntí určené klávesy, v tomto případě entru.

Příklad

Jednoduchý příklad použití: na hlavní scéně vytvořte dvě vrstvy. V jedné udělejte nějakou jednoduchou animaci a do té druhé dejte dva jakékoliv buttony (můžete klidně použít již připravené buttony - windows → common libraries → buttons). K jednomu tlačítku připojte následující skript (tzn. klikněte na button-tlačítko a vepište do panelu actions):
on (release) {
  stop();
}
Tím zajistíte, že když kliknete na toto tlačítko, zastaví se hlavní časová osa a tím pádem i celá vaše animace, kterou jste vytvořili. K druhému tlačítku poté přidejte tento skript:
on (rollOver) {
  play();
}
Pokud kliknutím na první button zastavíte časovou osu, pouhým přejetím kurzorem přes druhé tlačítko se časová osa opět rozeběhne. Myslím, že už je dost jasné, jak tyto události fungují. Jen ještě jedno malé upozornění. To, že v závorkách za stop(); není žádná hodnota neznamená, že tam ty závorky být nemusí. MUSÍ!!! Jinak vám příklad nebude fungovat.
prohlédnout příklad
stáhnout zdroják
Události můžete vkládat nejen do buttonů, ale pochopitelně také do movieclipů, které mohou reagovat na myš úplně stejně jako jakýkoliv button.

Události typu onClipEvent()

Někdy vám však nebude nestačit, aby byly příkazy spouštěny až když uživatel něco udělá. Určitě se dostanete do sitauce, kdy potřebujete, aby se příkazy prováděly opakovaně pořád dokola nebo aby se příkazy provedly až po načtení nějakého většího objektu. Přesně k tomu slouží události onClipEvent():

událost jak probíhá
onClipEvent(load) příkazy se spustí až se klip, ke kterému je tento skript připojen, celý načte.
onClipEvent(unload) příkazy se spustí, když klip opustí scénu
onClipEvent(enterFrame) tento ovladač událostí se opakuje každý snímek znova. To znamená, že pokud máte frame rate 12, budou příkazy provedeny dvanáctkrát za vteřinu.
onClipEvent(mouseDown) příkazy se provedou jakmile uživatel klikne myší (kdekoliv)
onClipEvent(mouseUp) příkazy se provedou když uživatel odklikne (taktéž kdekoliv)
onClipEvent(mouseMove) příkazy se budou provádět při každém pohybu myši
onClipEvent(keyDown) akce se spouští kdykoliv stisknete jakoukoliv klávesu
onClipEvent(keyUp) příkazy jsou spuštěny když stisknete a následně uvolníte nějakou klávesu
onClipEvent(data) spouští příkazy až po úplném načtení nějakého externího zdroje

Příklad

Opět jednoduchý příklad. Vytvořte si nový movie clip, do kterého nakreslete čáru (ne moc velkou) a zarovnejte ji na střed. Vložte movie clip čáry do hlavní scény a poté tomuto movie clipu v hlavní scéně přiřaďte tento skript:

onClipEvent(enterFrame) {
  this._rotation+=3;
}

Příkaz _rotation určuje rotaci klipu a this zase, že se skript vztahuje na tento movie clip. A teď jak bude program uvažovat.

Skript bude vyhodnocovám každý snímek znova a znova, to znamená, že v každém snímku se zvýší rotace čáry o tři stupně a čára se tak bude otáčet, aniž bychom ji sami zanimovali.

Neboli - trochu podrobněji - při načítání má čára nulovou rotaci. Animace se celá načte a provedou se skripty na prvním snímku a také na všech symbolech v prvním snímku. Předchozí skript tedy říká, že se má rotace zvýšit o 3, tj. na 3. Program tak učiní a jelikož už nikde jinde žádná skripta nejsou, program pokračuje dál. V hlavní scéně je pouze jeden snímek, tudíž se animace "vrátí" na první snímek a opět opakuje skript, který je na movie clipu a zase se zvýší rotace o tři, tentkokrát již na 6. A tak dále pořád znova a znova, dá se říci až do nekonečna, čímž se vytvoří dojem pomalého otáčení.

Naproti tomu kdybyste použili stejné příkazy ale pod událostí load, otočila by se čára pouze jednou, protože se příkazy provádí pouze když se čára načte do paměti. Přepište enterFrame na load a zvyšte rotaci na 45:

onClipEvent(load) {
	this._rotation+=45;
}

Čára se skutečeně otočí pouze o 45 stupňů.

Pokud dáváte nějaký skript na tlačítko, musí být vždy vloženo do nějaké události. Není možné jen tak přiřadit tlačítku akci stop();, program potom neví, kdy má skript provést.
další téma - Cílové cesty

hlavní stránka # o tento web se stará Lukáš Havrlant # lukas.havrlant@gmail.com #

NAVRCHOLU.cz