Macromedia Flash

V²uka Flash (24.)

┌vodem  |  V²uka Flash |  Odkazy  |  Aplikace  |  Otßzky a odpov∞di

KontextovΘ menu

Jednou 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 ContextMenu

Hlavnφ Φ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.

  • caption - Nßzev (text) nov∞ p°idanΘ polo₧ky.
  • enabled - Specifikuje, zda budeme moci tuto polo₧ku vybrat nebo ne.
  • separatorBefore - Umo₧≥uje p°idat nov² odd∞lovacφ pruh p°ed polo₧ku.
  • visible - Umo₧≥uje nastavit viditelnost polo₧ky.

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∞r

Pro tento dφl to bude vÜe. V p°φÜtφm dφle budeme pokraΦovat v poznßvßnφ Flashe.

 

Petr Rympler