Tímto dílem si odpovíme mimo jiné na zásadní otázku: „Jak ve Flash zaostřit textové pole?“, a ukážeme si i praktické využití při tvorbě dynamických nápověd u formulářů.
Kde je právě zaostřeno?
Pokud chceme uživateli usnadnit vyplňování formulářů, jednou z možností je zaostřit mu v konkrétních případech – na začátku vyplňování, při odeslání nesprávných hodnot apod. – některé textové pole. Tato operace někdy vyžaduje i zjištění právě aktivního textového pole (focused) před konkrétními údaji pozice kurzoru. Proto si představíme metody getFocus a setFocus.
getFocus
Tato metoda vrací řetězec s absolutní cestou k textovému poli, napřífklad volání z textového pole jmenopole by z kořenové časové osy by vrátilo takovouto hodnotu:
„_level0.jmenopole“
Je tedy nutností považovat vrácenou hodnotu za řetězec používající termín _level0 – porovnávání s termíny _root nebo this či bez uvozovek by Flash neprovedl korektně. Další důležitou vlastností této metody je vrácení hodnoty null v případě, že momentálně není aktivní žádné textové pole. Nyní si ukážeme, jak by šlo tuto metodu v praxi použít například jako nápovědu při vyplňování textových polí formuláře.
Aktivní textové pole
- Vytvoříme na scéně textové pole.
- Modifikujeme ho na Input text a Single Line.
- Pojmenujeme ho pole1.
- Obdobně vytvoříme další 2 textová pole a pojmenujeme je pole2 a pole3.
- Vytvoříme další textové pole, Dynamic text a Multiline.
- Zaškrtneme u něj Word Wrap.
- Pojmenujeme ho popisek.
- Všechny tyto pole označíme a zkonvertujeme v Movie clip.
- Pojmenujeme instanci tohoto movie clipu na scéně jako klip.
- Zvolíme pro tuto instanci panel Actions -> onClipEvent -> enterFrame
- Vložíme podmínkovou akci Actions -> if
- Napíšeme podmínku do pole Condition – Objects -> Selection -> getFocus.
- Doplníme za metodu getFocus == null.
- Zvolíme Actions -> set variable.
- Do pole Variable zadáme proměnnou popisek.
- V poli Value se nám objeví úvodní popisková zpráva pro případ, kdy ještě není zvoleno textové pole.
- Vložíme další akci Actions -> else if.
- Napíšeme do pole Condition metodu getFocus a porovnáme ji s proměnnou pole1 vyjádřenou výše uvedeným polohováním.
- Zvolíme Actions -> set variable.
- Proměnné popisek přiřadíme zprávu pro toto textové pole.
- Pomocí dalších 2 podmínek elseif doplníme skript i o popisky pro pole2 a pole3.
Celý náš příklad si můžete stáhnout TADY a samozřejmě si jej taky můžete otestovat:).
setFocus
Další obvyklou vlastností formulářů je, že když vyplníme nějaké pole a stiskneme Enter, kurzor se přesune se do pole dalšího (u HTML závislé na TAB INDEXu). Tuto vlastnost musíme opět konstruovat sami, a přesně tady se nám uplatní obdobně stavěná (a pozicovaná) metody jako getFocus – setFocus. Ta slouží k přeostřování polí na základě jejich přesné adresy. Nyní tedy navážeme na náš předchozí příklad a rozšíříme si ho o takovéto přeostřování polí:
- Vybereme náš programový kód instance.
- V rámci prvního příkazu else if za něj doplníme další podmínku if.
- V poli Condition bude Key.isDown(Key.ENTER) pro kontrolu stisku Enteru.
- Zvolíme Actions -> evaluate.
- Do pole Expression vložíme Objects -> Selection -> setFocus.
- Parametr variableName zaměníme za za absolutně cestu k textovému poli pole2.
- Přidáme takto podmínky i k dalším dvěma polím.
I tento příklad si můžete STÁHNOUT. A podívat se na něj taktéž.
Za týden
V následujícím díle začneme mluvit o Objektu String, protože je zásadní pro práci s řetězci.