Textové pole:

Dynamické a inputové textové pole

Pokud zvolíte nástroj Text Tool, máte v panelu Properties na výběr tři druhy textových polí. Statické, radiální a inputové.

Zvolte radiální a vytvořte na scéně textové pole. V panelu Properties můžete měnit šířku, výšku a umístění jako každému objektu a pokud chcete, aby textové pole bylo viděno v ActionScriptu (to většinou chcete), nějak ho pojmenujte (stejně jako kdybyste pojmenovávali instanci nějakého symbolu).

Dále si zde můžete nastavit font písma, velikost, zarovnání a řez (tučné písmo, kurzíva).

Pokud chcete jednořádkové textové pole, zvolte Single line, pokud chcete víceřádkové, Multiline. Multiline no wrap je bez zalomování řádků.

V položce Charakter si můžete vybrat, které znaky se mohou v textovém poli vyskytovat. Pokud chcete všechny, nic zde neměňte. Pokud například chcete, aby uživatel zadal číslo svých bot, odklikněte v tomto panelu pouze čísla.

Do formuláře Var zadejte adresu proměnné, kterou bude textové pole automaticky vypisovat.

Vlevo od tohoto formuláře jsou tři ikonky. Postupně zleva - pokud je ikonka zapnutá, text bude selektivní, druhá ikonka dovoluje používat HTML tagy a poslední ohraničuje textové pole čárou.

A konečně Maximum characters úplně dole je maximální počet znaků. To by bylo k samotnému nastavení všechno.

Ještě bych měl asi zmínit rozdíl mezi radiálním a inputovým polem. Je to prosté. Radiální pole slouží pouze k zobrazování textu, kdežto inputové dovoluje uživateli do pole psát (jako do klasického html formuláře).

Propojení s ActionScriptem

Vytvořte dynamické textové pole a pojmenujte jej třeba "pole". Do políčka Var napiště název proměnné "obsah". Na hlavní časové ose poté zadeklarujte novou proměnnou:

  obsah="bla bla bla bla bla bla bla bla
  bla bla bla bla bla bla bla bla bla bla
  bla bla bla bla bla bla bla bla bla bla.";

Ve Flashi musí být celý obsah proměnné na jednom řádku. Pokud si teď rozjdete animaci, do pole se vepíše obsah proměnné "obsah".

Pokud chcete k poli přistupovat přes ActionScript, použijte tuto syntaxi:

_root.pole.text="Ježíší Kriste!";  //vypíše "Ježíší Kriste!"
_root.pole.text=pozdrav;  //vypíše obsah proměnné pozdrav
_root.pole.text=pozdrav + "Tome";  //vypíše proměnnou pozdrav a přidá Tome

Příkaz text slouží k přístupu do textové obsahu textového pole. Ať už k k zapisování nebo k přečtení textu z pole. V dalším příkladu se o tom přesvědčíte. Zůstaňte klidně ve stejné scéně, ale vytvořte ještě jedno - tentokrát inputové - pole. Pojmenujte jej "vstup", do Var nic nezadávejte. Vložte do scény nějaký button, ke kterému připojte následující skript:

on (release) {
  _root.pole.text=_root.vstup.text;
}

Pokud nyní něco napíšete do inputového pole a stisknete tlačítko, text se zkopíruje do dynamického pole ("=" operátor přiřazení).

Můžete také z uživatelem zadaných informací zjistit, na jaký snímek se má celá animace přesunout.

Na hlavní scéně vytvořte inputové pole, které opětpojmenujte "vstup" a vedle něj button. Založte novou vrstvu a vložte za sebou čtyři klíčové snímky, přičemž do každého z nich nakreslete něco jiného (zvětšete první vrstvu ať jsou obě stejně dlouhé - stačí vložit snímek - F5). Na prvním snímku celou animaci zastopkujte (do prvního snímku vložte stop();). Poté vložte tlačítku následující skript:

on (release) {
  _root.gotoAndStop(_root.vstup.text);
}

Pusťte si animaci. Pokud nyní do textového pole zadáte nějaké číslo od jedné do pěti (podle toho, kolik jste vložili klíčových snímků), program Flash načte číslo a přiřadí ho jako hodnotu do příkazu gotoAndStop(); a tímpádem se celá animace přesune na daný snímek.

stáhnout zdroják

Postupně vypisovaný text

Poměrně efektivní zkrášlení vašich stránek. Vyberte první snímek hlavní časové osy a zadeklarujte novou proměnnou:

retezec="text, který se má postupně vypisovat";

Vytvořte nový movie clip, do kterého vložte obyčejné radiální pole a v panelu properties ho pojmenujte "pole". Vložte instanci movie clipu do hlavní scény a přiřaďte ji tento skript:

onClipEvent(enterFrame) {
  pole.text+=_root.retezec.charAt(i);
  ++i;
}

Jak vidíte, příkazy se budou provádět každý snímek znova a znova (událost onClipEvent(enterFrame)). Pro vás asi nezmáný příkaz charAt() zjišťuje, jaký znak je uložený v určené proměnné (zde "retezec") na x-té pozici (zde na "i"-té). První písmeno v řetězci má pak index 0, druhé 1 atd.

Proměnnou "i" jsme nikde nedeklarovali, což momentálně nevadí, program to překousne a bude s "i" počítat, jako by mělo hodnotu 0 a přidá do textového pole (operátor +=) první znak vašeho řetězce.

Na třetím řádku pak přičte k "i" jedničku a skript je u konce. Na další snímku se provede to samé, jen shodnotou i=1, tudíž do pole přidá druhý znak řetězce a opět se k "i" přičte jednička atd. atd. Rychlost zobrazování znaků pak závisí na vaší Frame Rate, čím vyšší, tím rychleji se bude text vypisovat.

Všimněte si, že nebylo nutné vypisovat absolutní cestu k radiálnímu poli. Skript je totiž vložen do instance klipu, ve kterém je pole obsaženo, tudíž program bude textové pole automaticky hledat uvnitř instance.

Pokud byste chtěli text uprostřed pole odsadit na nový řádek, musíte použít příkaz newline:

retezec="bla bla bla" + newline + "text na dalším řádku";
prohlédnout
stáhnout zdroják

Vylepšení předchozího příkladu

V předchozím příkladu uživatel nemohl žádným způsobem ovlivnit, kdy se má vypisování spustit a také nebylo možné vypisovat více než jeden řetezec. Samozřejmě to všechno lze udělat.

Na hlavní scéně vytvořte dvě libovolné tlačítka a poté opět vytvořte movie clip s radiálním textovým polem, kterépojmenujte "pole". Vložte instanci do hlavní scény a hned ji pojmenujte "pole_movie". Do prvního snímku přidejte tentokrát dvě proměnné:

retezec="";
i=0;

"retezec" bude opět text, který bude vypisován a "i" bude opět čítač. "retezec" je prázdný, protože na začátku animace se nemá vypisovat žádný text - ten se začne vypisovat až když přejedete myší přes jeden z buttonů. Nyní ale přiřaďte stejný skript jako v minulém příkladu instanci "pole_movie":

onClipEvent(enterFrame) {
  pole.text+=_root.retezec.charAt(_root.i);
  ++_root.i;
}

Jelikož je ale proměnná "retezec" prázdná, program nebude vypisovat nic. Nyní vyberte první tlačítko a přiřaďte následující skript:

on (rollOver) {
  _root.i=0;
  _root.retezec="text, který se má vypsat po přejetí přes první tlačítko";
}

Po přejetí myší přes tlačítko se "i" přiřadí nula. To je nesmírně důležité, neboť v minulém příkladu se text začal vypisovat okamžitě po spuštění animace, ale v tomto příkladu se začne vypisovat až když uživatel přejede myší přes tlačítko.

Jenže k proměnné "i" se stále každý frame přičítá od spuštění animace jednička, tudíž musíte zajistit, aby ve chvíli, kdy se má začít vypisovat text (tj, když přejedete myší přes tlačítko), bylo i=0 a text se vypisoval od začátku, nikoliv od půlky.

Poté už jenom proměnné "retezec" přiřadíte text, který semá vypisovat a program běží jak má. Teď přiřaďte stejnému tlačítku tento skript (umístěte jej za předcházející skript):

on (rollOut) {
  _root.retezec="";
  _root.pole_movie.pole.text="";
}

Tyto příkazy se spustí, když kurzor opustí tlačítko. Nejprve tedy vynulujete obsah proměnné "retezec", aby už program neměl co vypisovat (pokud byste tak neudělali, program by dále pokračoval ve vypisování) a poté ještě vymažete samotné textové pole.

Program je téměř hotov, druhému buttonu přiřaďteidentický skript, jenom změňte text, který se má vypisovat.

prohlédnout
stáhnout zdroják
další téma - Podmínky

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