FLASH rychle a snadno 16.

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

  1. Vytvoříme na scéně textové pole.
  2. Modifikujeme ho na Input text a Single Line.
  3. Pojmenujeme ho pole1.
  4. Obdobně vytvoříme další 2 textová pole a pojmenujeme je pole2 a pole3.
  5. Vytvoříme další textové pole, Dynamic text a Multiline.
  6. Zaškrtneme u něj Word Wrap.
  7. Pojmenujeme ho popisek.
  8. Všechny tyto pole označíme a zkonvertujeme v Movie clip.
  9. Pojmenujeme instanci tohoto movie clipu na scéně jako klip.
  10. Zvolíme pro tuto instanci panel Actions -> onClipEvent -> enterFrame
  11. Vložíme podmínkovou akci Actions -> if
  12. Napíšeme podmínku do pole Condition – Objects -> Selection -> getFocus.
  13. Doplníme za metodu getFocus == null.
  14. Zvolíme Actions -> set variable.
  15. Do pole Variable zadáme proměnnou popisek.
  16. V poli Value se nám objeví úvodní popisková zpráva pro případ, kdy ještě není zvoleno textové pole.
  17. Vložíme další akci Actions -> else if.
  18. 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.
  19. Zvolíme Actions -> set variable.
  20. Proměnné popisek přiřadíme zprávu pro toto textové pole.
  21. 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í:

  1. Vybereme náš programový kód instance.
  2. V rámci prvního příkazu else if za něj doplníme další podmínku if.
  3. V poli Condition bude Key.isDown(Key.ENTER) pro kontrolu stisku Enteru.
  4. Zvolíme Actions -> evaluate.
  5. Do pole Expression vložíme Objects -> Selection -> setFocus.
  6. Parametr variableName zaměníme za za absolutně cestu k textovému poli pole2.
  7. 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.

Váš názor Další článek: Česká verze WinRAR 3.0 k dispozici

Témata článku: , , , , , , , , , ,