Hantera menyhändelser
Flash Player 9 och senare, Adobe AIR 1.0 och senare
En meny skickar händelser när användaren väljer menyn eller när användaren väljer ett menyalternativ.
Sammanfattning av händelser för menyklasser
Lägg till händelseavlyssnare till menyer eller enskilda alternativ för att hantera menyhändelser.
Object
|
Skickade händelser
|
NativeMenu (AIR)
|
Event.PREPARING (Adobe AIR 2.6 och senare)
Event.DISPLAYING
Event.SELECT (spridda från underordnade objekt och undermenyer)
|
NativeMenuItem (AIR)
|
Event.PREPARING (Adobe AIR 2.6 och senare)
Event.SELECT
Event.DISPLAYING (spridda från överordnade menyer)
|
ContextMenu
|
ContextMenuEvent.MENU_SELECT
|
ContextMenuItem
|
ContextMenuEvent.MENU_ITEM_SELECT
Event.SELECT (AIR)
|
Välja menyhändelser
Om du vill hantera en klickning på ett menyalternativ lägger du till en händelseavlyssnare för select-händelsen i NativeMenuItem-objektet:
var menuCommandX:NativeMenuItem = new NativeMenuItem("Command X");
menuCommandX.addEventListener(Event.SELECT, doCommandX)
Eftersom select-händelser ”bubblar upp” till menyerna ovanför kan du även lyssna efter select-händelser på en överordnad meny. När du lyssnar på en menynivå kan du använda händelseobjektets target-egenskap för att avgöra vilket menykommando som valdes. I följande exempel spåras etiketten för det valda kommandot:
var colorMenuItem:NativeMenuItem = new NativeMenuItem("Choose a color");
var colorMenu:NativeMenu = new NativeMenu();
colorMenuItem.submenu = colorMenu;
var red:NativeMenuItem = new NativeMenuItem("Red");
var green:NativeMenuItem = new NativeMenuItem("Green");
var blue:NativeMenuItem = new NativeMenuItem("Blue");
colorMenu.addItem(red);
colorMenu.addItem(green);
colorMenu.addItem(blue);
if(NativeApplication.supportsMenu){
NativeApplication.nativeApplication.menu.addItem(colorMenuItem);
NativeApplication.nativeApplication.menu.addEventListener(Event.SELECT, colorChoice);
} else if (NativeWindow.supportsMenu){
var windowMenu:NativeMenu = new NativeMenu();
this.stage.nativeWindow.menu = windowMenu;
windowMenu.addItem(colorMenuItem);
windowMenu.addEventListener(Event.SELECT, colorChoice);
}
function colorChoice(event:Event):void {
var menuItem:NativeMenuItem = event.target as NativeMenuItem;
trace(menuItem.label + " has been selected");
}
Om du använder klassen ContextMenuItem kan du lyssna efter select-händelsen eller menuItemSelect-händelsen. menuItemSelect-händelsen ger dig ytterligare information om det objekt som har snabbmenyn, men den ”bubblar” inte upp till menyerna ovanför.
Visa menyhändelser
Om du vill hantera en menys öppnande kan du lägga till en lyssnare för displaying-händelsen som skickas innan en meny visas. Du kan använda visningshändelsen för att uppdatera menyn, t.ex. genom att lägga till eller ta bort alternativ eller genom att uppdatera aktiverade eller markerade statusar för enskilda alternativ. Du kan också lyssna efter händelsen menuSelect från ett ContextMenu-objekt.
I AIR 2.6 och senare versioner kan du använda preparing-händelsen för att uppdatera en meny som svar på antingen att en meny visas eller att ett alternativ väljs via ett kortkommando.