Funkce

K čemu slouží funkce?

Představte si, že máte nějaký složitý kód, který se opakuje na více místech. Pokud neznáte funkce, musíte na každé místo nakopírovat určený kód, čímž se jednak zvětšuje aplikace, ale také se ActionScript stává nepřehledným.

A jak by se to dalo vyřešit? Jednoduchou funkcí. Vytvoříte si nějakou vlastní funkci, do které napíšete svůj jeden kód a je vystaráno. V místech, kde kód patří, potom odkážete na danou funkci. Elegantně s úsporou místa a ještě k tomu přehledně.

Deklarace

Funkci můžete opět deklarovat kdekoliv, ale nejideálnější je to na hlavní časové ose, neboť máte funkci neustále "na očích" a nemusíte se starat o složité adresování. Samotná deklarace tedy vypadá takto:

function vymaz() {
  pole1.text="";
  pole2.text="";
}

Tímto jste vytvořili funkci s názvem "vymaz", která provede dvě jednoduché věci a sice vymaže dvě textová pole. Tuto funkci můžete přiřadit teoreticky kamkoliv, ale nejrozumnější to asi bude k nějakému tlačítku:

on (release) {
  _root.vymaz();
}

Po stisknutí tlačítka se programu předá zpráva, že má být provedena funkce "vymaz". Program se tedy koukne na hlavní časovou osu co to je za funkce a splní příkazy uvedené ve funkci, tj. vymaže obě dvě textové pole. Funkci můžete volat na různých místech a kolikrát chcete.

Funkce s argumentem

Už tohle je poměrně silná zbraň, ale není to všechno. K funkcím můžeme totiž ještě přiřadit vstupní argumenty, které zajistí větší interaktivitu. Zápis vypadá takto:

function posun(vzd) {
  _root.koule._x+=vzd;
}

Tato funkce s názvem "posun" má za úkol jediné. Posunout instanci "koule" o "vzd" na x-ové ose. A právě tato proměnná "vzd" je vstupní argument, který zadáváte, když voláte funkci. Asi nějak takto:

on (release) {
  _root.posun(40);
}

Po stisknutí se zavolá funkce "posun" a do argumentu "x" se přiřadí hodnota 40 a tímpádem se "koule" posune o 40 pixelů doprava. Argument samozřejmě nemusí být pokaždé stejný, k jinému tlačítku můžete přiřadit zase jiný argument:

on (release) {
   _root.posun(-25);
}

Teď by se "koule" posunula o 25 pixelů doleva. A aby toho nebylo málo, jedna funkce může obsahovat klidně více argumentů. Třeba tato funkce:

function posun2(vzd_x,vzd_y) {
  _root.koule._x+=vzd_x;
  _root.koule._y+=vzd_y;
}

Funkce má dva vstupní parametry - "vzd_x" (posunutí na x-ové ose) a "vzd_y" (posunutí na y-ové ose). K tlačítku poté přijde tento skript:

on (release) {
  _root.posun2(20,-10);
}

Po stisknutí tlačítka tedy bude provedena funkce "posun2" a budou jí předány argumenty 20 a -10 (pozor, pořadí hraje pochopitelně roli. První číslo bude přiřazeno prvnímu argumentu a druhé číslo druhému argumentu). Koule se tedy posune o 20 pixelů na x-ové ose a o -10 pixelů na y-ové ose.

Funkci můžete samozřejmě dát jako hodnotu argumentu proměnnou. Pokud budete mít proměnnou a=15;, můžete do volání funcke napsat třeba toto:

on (release) {
  _root.posun2(a,2*a);
}

V tomto případě by se koule posunula o "a" (tj. o 15) na x-ové ose a o "2a" (tj. o 30) na y-ové ose.

Funkce vracející výsledek

Někdy budete potřebovat, aby vám funkce něco vypočítala a vrátila výsledek. K tomu se používá příkaz return:

function spocti(a,b) {
  return (a+b);
}

K tlačítku poté vložte tento skript:

on (release) {
   vysledek=_root.spocti(2,7);
}

Funkce tedy nejprve převezme hodnoty argumentů 2 a 7, sečte je a vrátí výsledek, respektive ho přiřadí proměnné "vysledek".

Funkce ve funkci

Pokud byste potřebovali, můžete klidně použít funcki ve funkci. Příklad:

function spocti(a,b) {
  return (a+b);
}
function nasob (a,b) {
  return (a*b)
}
function vytiskni (a,b) {
  vysl1=spocti(a,b);
  vysl2=nasob(a,b);
  return vysl1+vysl2;
}

Nejdříve tedy vytvoříte dvě funkce. První funkce zadané argumenty sčítá, druhá je vynásobí. Ve třetí funkci "vytiskni" poté zavoláte funkci "spocti", která sečte argumenty, které jsou identické s argumenty funkce "vytiskni" a přiřadíte je proměnné "vysl1". Na dalším řádku poté stejné argumenty vynásobíte funckí "nasob" a výsledek přiřadíte proměnné "vysl2". Tyto dvě proměnné nakonec ještě znovu sečtete a vrátíte příkazem return. K tlačítku tedy přiřaďte tento skript:

on (release) {
  vysledek=vytiskni(4,5);
  pole.text=vysledek;
}
Ještě jedna poznámka na konec. Proměnné, které používáte uvnitř funkce (vysl1 nebo vysl2) nemůžete použít nikde jinde, program používá tyto pomocné proměnné jenom při běhu funkce a po dokončení funkce již tyto proměnné nezná.
další téma - Duplikování klipů

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