![]() |
Macromedia FlashVýuka Flash (24.) |
Úvodem | Výuka Flash | Odkazy | Aplikace | Otázky a odpovědi |
|
Kontextové menuJednou z dalších novinek, které najdeme ve Flashi verze MX 2004 jsou kontextové menu. Nyní můžeme vytvořit vlastní menu, které se zobrazí po kliknutí pravým tlačítkem nad animací, tlačítkem nebo textovým polem. Této vlastnosti můžeme využít zejména pokud budeme vytvářet uživatelsky zajímavější rozhraní. Nyní můžeme do kontextového menu přidávat nové položky, oddělovací pruhy atd. Jako příklad si můžete vyzkoušet následující ukázku. Třída ContextMenuHlavní činnost obstarává třída ContextMenu, která umožňuje vytvoření nového kontextového menu. Pro vytvoření nového menu musíme nejprve vytvořit novou instanci třídy ContextMenu. // Vytvoření instance var testovaciMenu:ContextMenu = new ContextMenu(); Nyní můžeme pracovat s touto instancí a přidávat nové položky do menu pomocí vlastnosti CustomItems. Každou položku charakterizuje třída ContextMenuItem, pomocí které můžeme nastavit vlastnosti přidávané položky. Nové položky se zobrazí vždy nahoře a musí obsahovat alespoň jeden znak (mezery, zalomení a jiné znaky jsou ignorovány). Maximální délka položky je 100 znaků. U každé nové položky můžeme nastavit následující vlastnosti.
Nyní přidáme novou položku do našeho testovacího menu pomocí vlastnosti CustomItems. Pro přidání využijeme metodu push, protože pracujeme s polem. // Vytvoření instance var testovaciMenu:ContextMenu = new ContextMenu(); // Přidáme novou položku u které nastavíme všechny vlastnosti na hodnotu true testovaciMenu.customItems.push(new ContextMenuItem("První položka", vyberPolozku, true, true, true)); Abychom mohli reagovat na událost, kdy uživatel klikne na námi přidanou položku, tak jsme specifikovali jako druhý parametr konstruktoru ContextMenuItem událost vyberPolozku: // Vytvoření instance var testovaciMenu:ContextMenu = new ContextMenu(); // Přidáme novou položku u které nastavíme všechny vlastnosti na hodnotu true testovaciMenu.customItems.push(new ContextMenuItem("První položka", vyberPolozku, true, true, true)); // Událost po klinutí na položku function vyberPolozku(objekt:Object, menu:ContextMenu) { trace("Kliknutí na položku"); } První parametr obsahuje odkaz na objekt, nad kterým bylo vyvoláno kliknutí tlačítka a druhým parametrem je odkaz na kontextové menu, pomocí kterého můžeme zpětně nastavit jeho vlastnosti. Nyní již stačí jenom přiřadit naše nové kontextové menu existujícímu objektu (tlačítko, textové pole, movie clip). // Vytvoření instance var testovaciMenu:ContextMenu = new ContextMenu(); // Přidáme novou položku u které nastavíme všechny vlastnosti na hodnotu true testovaciMenu.customItems.push(new ContextMenuItem("První položka", vyberPolozku, true, true, true)); // Událost po klinutí na položku function vyberPolozku(objekt:Object, menu:ContextMenu) { trace("Kliknutí na položku"); } // Přiřadíme naše menu hlavnímu klipu _root.menu = testovaciMenu; Po spuštění klipu a kliknutím pravým tlačítkem na jeho plochu se nám zobrazí menu a v něm naše nová položka. Avšak spolu s naší položkou se zobrazí i spousta dalších, které si tam nepřejeme. Využijeme tedy metody hideBuiltInItems() třídy ContextMenu, která odstraní všechny ostatní položky kromě Settings a Debugger v debug módu. // Vytvoření instance var testovaciMenu:ContextMenu = new ContextMenu(); // Přidáme novou položku u které nastavíme všechny vlastnosti na hodnotu true testovaciMenu.customItems.push(new ContextMenuItem("První položka", vyberPolozku, true, true, true)); // Událost po klinutí na položku function vyberPolozku(objekt:Object, menu:ContextMenu) { trace("Kliknutí na položku"); } // Přiřadíme naše menu hlavnímu klipu _root.menu = testovaciMenu; // Skryjeme ostatní položky testovaciMenu.hideBuiltInItems(); Na závěr si ještě ukážeme, že můžeme některé z vestavěných položek přidat nebo skrýt individuálně. Právě k tomuto slouží vlastnost builtInItems třídy ContextMenu, pomocí které můžeme nastavit viditelnost položek save, zoom, quality, play, loop, rewind, forward_back a print. // Vytvoření instance var testovaciMenu:ContextMenu = new ContextMenu(); // Přidáme novou položku u které nastavíme všechny vlastnosti na hodnotu true testovaciMenu.customItems.push(new ContextMenuItem("První položka", vyberPolozku, true, true, true)); // Událost po klinutí na položku function vyberPolozku(objekt:Object, menu:ContextMenu) { trace("Kliknutí na položku"); } // Přiřadíme naše menu hlavnímu klipu _root.menu = testovaciMenu; // Skryjeme ostatní položky testovaciMenu.hideBuiltInItems(); // Zobrazíme print položku testovaciMenu.builtInItems.print = true; Pro kopírovaní obsahují třídy ContextMenu a ContextMenuItem metodu copy(), pomocí které můžeme zkopírovat jednotlivé menu. Celý příklad je možné si stáhnout zde. ZávěrPro tento díl to bude vše. V příštím díle budeme pokračovat v poznávání Flashe.
|
|