Funkce
Obsah
Jednoduchá funkce (procedura)
function zablokuj_tlacitko() { _root.tlacitko.enabled = false; _root.tlacitko.label = 'X'; }
Toto je nejjednodušší definice funkce (bez vstupních a výstupních argumentů). Při zavolání této funkce se jednoduše provedou příkazy uvnitř. Někdy se jí říká procedura.
Zavolání funkce bez vstupních argumentů může vypadat třeba takto:
zablokuj_tlacitko();
Přestože funkce nemá vstupní argumenty, prázdnou závorku je třeba uvést.
Složitější funkce
Zde už použijeme vstupní argumenty.
function zablokuj_tlacitko(popisek, barva) { _root.tlacitko.enabled = false; _root.tlacitko.label = popisek; _root.tlacitko.color = barva; }
Když potom voláme funkci, je třeba specifikovat hodnoty argumentů:
zablokuj_tlacitko('X', 0xfcfcfc);
Vracení hodnot z funkce (return)
Kromě přijímání externích argumentů může funkce vracet hodnoty:
function vynasob(a, b){ return a * b; }
Příkaz return vrací hodnotu funkce a (na to pozor) ukončuje její zpracování. Případné příkazy za return už se neprovedou. Toho lze využít v podmínkách. Samotný return je možné použít i v proceduře právě na vyskočení ven.
trace(vynasob(5, 3)); // 15
Funkce s proměnlivým počtem argumentů
Někdy je třeba funkci předávat předem neznámý počet argumentů.
trace(prumer(5, 8, 0, 16, 38, 14)); // 13.5??
AS2 neomezuje počet vstupních argumentů, funkci jich tedy můžete předat kolik chcete. Nespecifikované argumenty pak najdete v objektu arguments.
function prumer(){ var sum = 0; for(var item in arguments){ sum += arguments[item]; } return sum / arguments.length; }
Každá funkce má objekt arguments obsahující pole přijatých argumentů. Počet přijatých argumentů je uložen ve vlastnosti length.
Objekt arguments byl v AS3.0 zavržen, používá se nově tzv. rest operátor "..."
V AS3 také musí počet předaných argumentů odpovídat definici. Není možné předat libovolné množství.
Anonymní funkce (closure)
Občas je třeba objektu nebo funkci předat vlastní funkci specifikovanou jen pro tento jeden účel. V takovém případě je možné funkci definovat přímo v místě použití.
_root.onMouseDown = function(){ _root.nextFrame(); } // je totéž jako: function mouseDownHandler(){ _root.nextFrame(); } _root.onMouseDown = mouseDownHandler;
Anonymní funkce je bezejmenná, tím pádem nejde použít víckrát.
Všimněte si prosím na posledním řádku, že při předání funkce objektu se za název funkce závorka nepíše. Narozdíl od samotného zavolání funkce.
Omezení vstupních a výstupních datových typů
Stejně jako u proměnných, i vstupy a výstupy funkcí mohou být typově omezené.
function zablokuj_tlacitko(popisek:String, barva:Number):Void { _root.tlacitko.enabled = false; _root.tlacitko.label = popisek; _root.tlacitko.color = barva; }
Vidíte, že syntaxe je identická, Void znamená žádný.
Je dobrým zvykem omezovat vstupy i výstupy z funkcí. Na nepovolené typy pak může kompiler už při kompilaci upozornit.
Všimněte si prosím, že Void je v AS2.0 psán s velkým počátečním V. Od verze 3.0 je pak, v rámci kompatibility s ostatními ECMA jazyky, void vždy s malým v.
Předdefinované funkce prostředí
Jsou to funkce definované samotným Flashem v každé animaci. Mějte prosím na paměti, že ve verzi 3.0 už většina těchto funkcí neexistuje.
- Boolean(výraz)
Slouží k transformaci obsahu proměnné na booleovskou hodnotu (true/false) - escape(řetězec)
Konvertuje textový řetězec (string) na URL-encoded. Například řetězec "ěščřžýáíé" bude vypadat takto:"%EC%9A%E8%F8%9E%FD%E1%ED%E9" nebo v režimu unicode UTF-8 (jen MX verze):"%C4%9B%C5%A1%C4%8D%C5%99%C5%BE%C3%BD%C3%A1%C3%AD%C3%A9"
Jen připomenu, režim Unicode lze vypnout příkazem:system.useCodepage = true
Opačný efekt má funkce unescape() eval(nazev proměnné nebo vlastnosti)
Řetězec, který má být chápán jako název proměnné nebo vlastnosti.pozdrav1 = "ahoj"; pozdrav2 = "čau"; pozdrav3 = "nazdar"; pocitadlo = 2; zobrazit = eval("pozdrav" + pocitadlo); // proměnná "zobrazit" bude mít hodnotu "čau"
V AS3 byla funkce eval bez náhrady odstraněna.
- getProperty(instance, vlastnost)
Funkce získávající vlastnosti instance MovieClipu na scéně - getTimer()
Udává počet milisekund, které uplynuly od doby, kdy začalo movie hrát - getVersion()
Tato funkce vrací textový řetězec udávající verzi operačního systému a Flash přehrávače.
Například:WIN 5,0,17,0 - isFinite(číslo)
Vracítrue, pokud je číslo konečné afalse, pokud je nekonečné - isNaN(výraz)
Udávátruepokud výraz není číslo, jinakfalse - Number(výraz)
Konvertuje výraz na číslo. Pokud je konvertován textový řetězec obsahující písmena je vrácena hodnotaNaN - parseFloat(řetězec)
Funkce analyzující čísla v textovém řetězci po znacích tak dlouho, dokud nenarazí na nenumerický znak:
parseFloat("-2"); // -2 parseFloat("2.5"); // 2.5 parseFloat("3.5e6"); // 3500000 parseFloat("abcdefgh"); // NaN parseFloat("abcdefgh6976"); // Nan parseFloat("123abcd584efgh"); // 123
- parseInt(výraz, radix)
Podobně jako v předchozím případě analyzuje číslo z textového řetězce. Umožňuje konvertovat i jiná, než dekadická čísla (až 36ková čísla). - String
Konvertuje výraz na textový řetězec. Pokud obsahuje čísla, jsou také chápány jako text - targetPath
Vrací dot zápis pozice instance MovieClipu. Například:_root.prvni.druhy - unescape
Viz escape.