Pole (array) je s trochou nadsázky proměnná obsahující proměnné (nebo - jak už jsem říkal - tabulka o jednom řádku). Do pole můžete ukládat jakékoliv proměnné a později je zase volat. Pole slouží především k zapamatování podobných informací o něčem. Jednotlivé položky jsou pak indexovány (první položka má opět index 0, nikoliv 1). Možností deklarace je hned několik:
pole[0]=123; pole[1]="Britney Spears"; pole[2]=promenna;
Identický zápis by pak byl:
pole=new Array (123, "Britney Spears", promenna);
nebo:
pole = [123, "Britney Spears", promenna];
Array značí pole. K jednotlivým položkám poté přistupujete pomocí hranatých závorek:
zpevacka.text=pole[1];
Do textového pole "zpevacka" se vepíše Britney Spears. Pokud chcete definovat pole s pevným počtem prvků, použijte následující syntaxi:
pole=new Array (5);
Existují i vícerozměrná pole, tzv. matice nebo prostě tabulky. Tato matice už pak nemá pouze jeden index, ale dva:
pole=[[1,2],[5,6]];
Tento zápis vytvoří dvourozměrné pole (můžete vytvořit i trojrozměrné, klidně i ještěvícerozměrné), které by vypadalo asi takto:
1 2 5 6
K jednotlivým položkám poté přistupujete stejně jako v případě jednorozměrného pole, jen musíte uvést dvě souřadnice. Jako první řádek, poté sloupec:
a=pole[1][0];
Proměnné "a" se tedy přiřadí číslo 5. Jelikož pole se indexuje od jedničky, tak řádek 1 odpovídá ve skutečnosti řádku 2 a sloupec 0 je sloupec 1.
Pokud se vám předchozí způsob vytváření dvourozměrných polí nelíbil, mám pro vás ještě jedno řešení. Použít v poli objekt "Object". Deklarace vypadá takto:
pole = new Array(); pole[0]=( { jmeno: "Bob", mesto: "Řitín", psc: 12345 } ); pole[1]=( { jmeno: "Dave", mesto: "Krnov", psc: 67890 } ); pole[2]=( { jmeno: "Adam", mesto: "Jihlava", psc: 13579 } );
Abyste se ke svým datům dostali, musíte použít konstrukci s tečkou:
zakaznik1=pole[0].jmeno;
Proměnné "zakaznik1" se nyní přiřadí vlastnost "jmeno" v poli na indexu 0 - tzn. "Bob".
metoda | k čemu slouží | příklad použití |
concat | spojí dvě pole (nebo více) a prvky seřadí za sebe. | nove_pole = pole1.concat(pole2, pole3, pole4...); |
---|---|---|
join | vypíše obsah pole a mezi jednotlivé indexové hodnoty vloží zadaný znak | vypis.text = pole.join(" - ") |
pop | odstranní poslední položku pole a vrátí zpět její hodnotu | pozdrav=pole.pop(); //pozdrav má hodnotu poslední položky pole |
shift | odstraní první položku pole a vrátí jeho hodnotu | trauma=pole.shift(); |
push | přidá na konec prvky v závorce a poté vrátí délku nově vzniklého pole | pocet = pole.push("záchod", "ovce", "zelenina"); |
reverse | převrátí obsah pole | pole.reverse(); |
slice | zkopíruje část hodnot (určené indexy od-do) ze zadaného pole do nového pole (původní pole zůstane neporušené) | kopie=pole.slice(od,do); //z proměnné "kopie" se automaticky stane pole |
sort | abecedně seřadí prvky v poli podle délky slova | pole.sort(); |
sortOn | seřadí abecedně objektové pole, přičemž v závorce uvedete, kterou vlastnost má Flash brát v úvahu | pole.sortOn("jmeno"); //prvky v poli budou seřazeny podle jména - Adam, Bob, Dave |
splice | tato metoda odstraňuje z pole uvedené buňky od-do a na jejich místo přidává hodnoty uvedeny dále | pole.splice(od ,do, "toto","bude","vlozeno"); |
toString | vepíše celý obsah pole oddělený čárkami | promenna=pole.toString(); |
unshift | přidá hodnoty v závorce na začátek pole a vepíše jeho novou velikost | pole.unshift("čus", "ahoj", "zdar"); |
vlastnost | hodnota | příklad použití |
length | Vrátí délku pole | delka=pole.length; |
I přes pole lze udělat efekt postupně vypisovaného textu, avšak je to daleko náročnější. Ale poslouží to jako dobrý příklad na pochopení pole. Na prvním snímku tedy zadeklarujte nové pole:
pole=new Array ("s","e","k","e","r","a"," ","j","e"," ","o","s","t","r","á");
Poté vytvořte movie clip a v něm textové pole, které pojmenujte "vypis". Vložte ho do hlavní scény a přidejte k němu následující skript:
onClipEvent(load) { i=0; } onClipEvent(enterFrame) { vypis.text+=_root.pole[i]; ++i; }
Nejdříve zadeklarujeme novou proměnnou "i", která bude sloužit jako čítač. Poté bude program každý frame vypisovat do pole "vypis" obsah pole na indexu "i", který následně zvětšíte o jedničku, čímž zajistíte, aby se další frame vypsal další znak. To je všechno.
Tento postup ale opravdu nedoporučuji, pokud byste měli dlouhý text na vypsání, byl by horor narvat ho celý do pole. Mnohem lepší postup je popsán u textových polí.