Lav din egen højre-kliks menu i Flash

Kategori: Tips og tricks | Kommentarer (0)
Gemt: 2007-05-30 10:26


ContextMenuSkrev i sidste uge en lille indlæg om Jubii Yeah, hvor jeg blandt andet fortalte hvordan vi på det projekt udnytter muligheden for at man kan tilpasse højre-kliks menuen i Flash. Dagens indlæg handler om hvordan du selv kan gøre det samme.

Hjælpen i Flash på dette område er faktisk god og dækkende, men det svære med hjælp er jo at man skal vide hvad tingene hedder for at kunne finde det, og den klasse som styrer højre-kliks menuen hedder ContextMenu, og selve menupunkterne er af typen ContextMenuItem.

Herunder er et meget simpelt eksempel:

var Menu_cm:ContextMenu = new ContextMenu();

//Skjuler de eksisterende menupunkter, svarende til at menu=false i html
Menu_cm.hideBuiltInItems();

//Opretter mit eget menupunkt
var MenuPunkt1_cmi:ContextMenuItem = new ContextMenuItem("Min menu", testFunktion);

//Tilføjer punktet til min menu
Menu_cm.customItems.push(MenuPunkt1_cmi);

//Sætter min menu til at være den menu der skal bruges
this.menu = Menu_cm;

function testFunktion() {
	trace("weeeee :-) ");
}

Koden burde være temmeligt selvforklarende, men der er et par ekstra ting der er værd at bemærke.

Hvis den funktion som du sætter menupunktet til at kalde ikke eksisterer, så dukker menupunktet simpelthen ikke op når man højre-klikker. For i det hele taget at kunne se punktet, så skal du kalde en funktion der findes, som dog så kan være stort set tom som i dette tilfælde.

Når du har planer om at ændrer højre-kliks menuen, så må menu parametret i html’en ikke samtidig være sat til false, det vil nemlig altid overrule det som du sætter det til inde i Flash-filen. Med andre ord, er menu=false, så dukker der ingen punkter op.

Det er også muligt at ændre på menupunktet efter det er tilføjet, eksempelvis kan du disable det:

MenuPunkt1_cmi.enabled = false;

Eller ændre teksten:

MenuPunkt1_cmi.caption = "Ny tekst";

Alt i alt er det super nemt og brugt rigtigt kan det være særdeles nyttigt.