Objekt Array

Deklarace

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);

Vícerozměrná pole

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.

Objektové pole

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".

Použitelné metody

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;

Postupně vypisovaný text podruhé

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í.

prohlédnout
stáhnout zdroják
další téma - Seznámení s Actionscriptem

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