Има събитие, което се изпраща, когато контекстното меню (меню с десен бутон) в actionscript за flash е отворено:
ContextMenuEvent.MENU_SELECT
Сега, има ли събитие, което се изпраща, когато менюто е затворено?
Има събитие, което се изпраща, когато контекстното меню (меню с десен бутон) в actionscript за flash е отворено:
ContextMenuEvent.MENU_SELECT
Сега, има ли събитие, което се изпраща, когато менюто е затворено?
Добър въпрос. Това би направило хубава заявка за функция, събитие ContextMenuEvent.MENU_CLOSED :)
Мисля, че имам половината ти отговор. Ето моята идея:
var myContextMenu:ContextMenu = new ContextMenu();
var menuLabel:String = "Custom Item";
var rightClicking:Boolean;
addCustomMenuItems();
myContextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, menuSelectHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseUpHandler);
var redRectangle = makeRedRectangle();
redRectangle.contextMenu = myContextMenu;
function makeRedRectangle():Sprite{
redRectangle = new Sprite();
redRectangle.graphics.beginFill(0x990000,.2);
redRectangle.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
redRectangle.mouseChildren = false;
addChild(redRectangle);
return redRectangle;
}
function addCustomMenuItems():void {
myContextMenu.hideBuiltInItems();
var item:ContextMenuItem = new ContextMenuItem(menuLabel);
myContextMenu.customItems.push(item);
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuItemSelectHandler);
}
function menuSelectHandler(event:ContextMenuEvent):void {
trace("menuSelectHandler: " + event);
rightClicking = true;
}
function menuItemSelectHandler(event:ContextMenuEvent):void {
trace("menuItemSelectHandler: " + event);
}
function mouseUpHandler(event:MouseEvent):void{
if(rightClicking){
trace('ContextMenu Closed\nThank You! Come Again!');
rightClicking = false;
}
}
По принцип създавам спрайт, който стои отгоре на всичко, но има mouseChildren, зададен на false, така че клиповете под него могат да получат щраквания. Може да искате този да е прозрачен. Използвах това, за да получите събитие, когато щракнете с десния бутон върху него. Когато това се случи, задавам rightClicking на true, което означава, че знам, че е натиснат десният бутон, просто чакам нещо друго да се случи. Има две възможности:
За опция 1, ако потребителят избере някой от вашите персонализирани елементи, това е страхотно, можете да се справите с това, ако не, поне знаете какво може да се случи. За опция 2 съм настроил слушателя за събитието MOUSE_DOWN, така че ако щракването с дясно е било включено и сте стигнали до мишката надолу, това е затварянето на менюто ви.
Надявам се това да помогне!
Знам, изглежда като хакерско старо училище as2 и кодът е модифициран от примера на документацията, но това е мисъл :)