Søger du en specifik kategori?

 



Oprettet ons. d. 04. februar 2009 kl. 21:06

webt
webt (31.211 point)
codenerd.dk
Guidens karaktér
1
2
3
4
5

Egne context menuer (højrekliks menuer) i Flash MX 2004

Denne tutorial gennemgår hvordan man laver sine egne context menuer (Den menu der fremkommer når man højreklikker) i Flash. (Nb. Kun Flash MX 2004) Artiklen ”kræver” kendskab til det grundlæggende i Action Scripting.
Det kan i nogle tilfælde være ønskværdigt at have sin egen højreklik menu, i stedet for den indbygget Zoom in, Show all, quality osv som man bliver præsenteret for ved højreklik på en flash animation. Dette er med Flash MX 2004 blevet muligt.

Du kan lave dine egne menuer for hele siden, eller du kan sætte dem på elementer af flash siden (fx et movieclip eller et tekstfelt).

Eksempel 1 - fjern de indbyggede elementer
I vores første eksempel laver vi vores egen menu på siden uden nogen funktionalitet, det eneste mål er at fjerne de indbyggede elementer (på nær settings og about som ikke kan fjernes).

Det første vi gør, er at oprette et instans af contextMenu klassen, og gemmer dette i en variabel, dette gøres således:

var minMenu:ContextMenu = new ContextMenu();


Nu kan vi arbejde frit med minMenu som en ny contextmenu. Således fjerner vi de indbyggede elementer:
minMenu.hideBuiltInItems();

Vi kalder simpelthen metoden hideBuiltInItems på vores gemte contextmenu instans.

Herefter mangler vi bare at tilføje menuen det gør vi ved at skrive:
_root.menu=minMenu;

Herefter vil standardmenuen kun indeholde Settings og About.

Eksempel 2 - Den mere brugbare
Eksempel 1 er jo ikke det mest brugbare, så derfor vil vi nu tilføje punkterne Afspil og pause til samme menu.

Før _root.menu=minMenu skrives følgende:
var startPunkt=new ContextMenuItem("Afspil",afspil,false,true,true);

Her opretter vi en instans af contextMenuItem klassen og gemmer den i variablen startPunkt. Hvis vi ser lidt nærmere på denne kode, så består den af  5 elementer (opstillet i parentesen).
Første værdi : Det label som skal vises i menuen
Anden værdi  : Den funktion der skal kaldes når der klikkes på 
              menuen
Tredje værdi : Skal sættes til true eller false, denne bestemmer
              om der kommer en separator linie over punktet.

Fjerde og femte værdi er ikke krævet, de bestemmer henholdsvis om punktet skal være aktivt (klikbart) samt om punktet skal vises eller ej, igen er værdien enten true eller false.

Ligeledes tilføjer vi et stop punkt:
var stopPunkt=new ContextMenuItem("Pause",stopAfspil,false,true,true);

Nu har vi oprettet punkterne som variabler, for at tilføje dem til menuen skal vi have fat på customItems metoden på contextMenu variablen således:
minMenu.customItems.push(startPunkt,stopPunkt);

Nu skulle vores fulde kode gerne se sådan her ud:
var minMenu:ContextMenu = new ContextMenu();
minMenu.hideBuiltInItems();
var startPunkt=new ContextMenuItem("Afspil",afspil,false,true,true);
var stopPunkt=new ContextMenuItem("Pause",stopAfspil,false,true,true);
minMenu.customItems.push(startPunkt,stopPunkt);
_root.menu=minMenu;

For at dette skal virke er det nødvendigt at funktionerne afspil og stopAfspil eksisterer i dokumentet. I dette tilfælde laver vi dem ganske enkelt så de afspiller og stopper filmen:
function afspil() {
    play();
}
function stopAfspil() {
    stop();
}

Nu skulle menuen gerne virke og bestå af Afspil, Pause, Settings og About.

Eksempel 3 - udbygning af funktionerne
Nu spørger du måske hvorfor vi skal vise både afspil og pause i menuen, den ene burde vel erstatte den anden. Ja det kan der jo være noget om. Her giver flash os muligheden for enten at slå et punkt fra så det ikke er klikbart eller fjerne det helt (læs gør det usynligt), dette gøres ved at bruge metoden enabled eller visible på den variabel som indeholder punktet. Derved får vi følgende nye funktioner:
function afspil() {
    play();
    startPunkt.visible=false;
    stopPunkt.visible=true;   
}
function stopAfspil() {
    stop();
    startPunkt.visible=true;
    stopPunkt.visible=false;
}

Og så husker vi også lige at sætte den femte parameter i stopPunktet til false således det ikke vises pr default.

Eksempel 4 - det virker også på movieclips
Hvis vi ikke ønsker at sætte vores menu på _root kan som tidligere nævnt også sætte den på et movieclip. Dette gøres simpelthen ved at bruge instans_navn_på_mc.menu=minMenu; i stedet for _root.menu. Derudover skal funktionerne selvfølgelig ændres så de passer, derved får vi følgende færdige kode (hvor instans navnet på movieclippet er mit_mc:
var minMenu:ContextMenu = new ContextMenu();
minMenu.hideBuiltInItems();
var startPunkt=new ContextMenuItem("Afspil",afspil,false,true,false);
var stopPunkt=new ContextMenuItem("Pause",stopAfspil,true,true,true);
minMenu.customItems.push(startPunkt,stopPunkt);
mit_mc.menu=minMenu;
function afspil() {
    mit_mc.play();
    startPunkt.visible=false;
    stopPunkt.visible=true;   
}
function stopAfspil() {
    mit_mc.stop();
    startPunkt.visible=true;
    stopPunkt.visible=false;
}

The end
Og så ikke alligevel her er et par links:

<a href="http://martin-nielsen.com/ (...) i denne artikel</a> - Her ligger desuden et lidt mere avanceret eksempel som kombinerer alle de brugte koder.

<a href="http://livedocs.macromedia.com/ (...) Live docs om custom context menuer</a>

Og helt til slut, en opfordring til os alle om at få nogle flere Flash artikler her på eksperten :)

Skrevet ons. d. 06. juli 2005 kl. 21:47| #1


Skrevet tor. d. 07. juli 2005 kl. 10:56| #2

barklund (102.362 point)
Nydeligt skrevet, nydeligt dokumenteret og en fin indledning til emnet :)

Skrevet tor. d. 07. juli 2005 kl. 19:15| #3


Skrevet ons. d. 20. juli 2005 kl. 11:12| #4

mobius6 (44.734 point)
mums, tak for det ;-)
//M6

Skriv en kommentar



Mest populære guides i Script

Guidens karakter
!!!Karaktér: 4
10 stemmer
19/03 - 2012
Af: olebole

Prepared Statements under MySQLI - kom igang

Det gamle (og forældede) MySQL-API er stadig udbredt i skræmmende grad, selvom der findes langt sikrere alternativer. Et af dem hedder MySQLI med Prepared Statements. Denne guide er beregnet for begyndere i MySQLI -...
PHP  |  Læs »
Guidens karakter
!!!Karaktér: 4
4 stemmer
31/03 - 2012
Af: olebole

Sikrere håndtering af MySQL-fejl

Ofte udskrives MySQL-fejlmeddelelser helt ukritisk. Dette er en ren lækkerbidsken for hackere eller andre med destruktive hensigter. Denne guides formål er at anvise en mere hensigtsmæssig fremgangsmåde til at...
PHP  |  Læs »
Guidens karakter
!!!Karaktér: 1
5 stemmer
25/03 - 2012
Af: tobrukDk

Begrynder til at lave log ind system

Hej Vil jeg gerne lave en lille programmering forklare til hvordan du laver din helt egen lille start på at log ind system du kan altid lave videre på det eller bygge videre på det :) Som sagt i den her log ind...
PHP  |  Læs »

Log ind

   

   



   




Tips & Tricks fra PC World

Teaser billede

Top 5: Virale YouTube-videoer fra Danmark

Lægger du mærke til de mere eller mindre skjulte reklamebudskaber, når du ser videoer på nettet? Vi har taget et kig på fem utrolige danske videoer, som er blevet virale hit.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan fupper smarte svindlere dig på Facebook

Se hvordan du undgår Facebook-fup i fremtiden.


Nyheder fra Computerworld

Teaser billede

App-udvikling 2.0: Sådan er den perfekte app

ComputerViews: Den værste app-hype er ved at have lagt sig, og nu ser vi konturerne af fremtidens app-design. Men hvordan udnytter man de mobile muligheder optimalt?


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger