今天群里朋友问,A B C D多个显示对象有同一个NativeMenu菜单,怎么知道是哪个显示对象弹出的菜单?
首先想到的是NativeMenu有Event.DISPLAYING事件,可是具体是哪个显示对象就不好弄了,
然后想,如果只是相同的菜单显示,而用不同的NativeMenu可以用闭包函数实现,O(∩_∩)O~
可是那位朋友说用闭包不适合的,o(╯□╰)o
又有朋友说用ContextMenuEvent.MENU_SELECT试试,我想NativeMenu没有ContextMenuEvent事件的,怎么能用呢。
先试下再说了, 没想到果然ok的,郁闷了,API上说NativeMenu没有ContextMenuEvent事件的啊, 莫非我的API有误?describeType 看下,晕倒,也没ContextMenuEvent事件的。
然后测试NativeWidow.menu,不会触发ContextMenuEvent事件,
然后猜想,可能InteractiveObject的contextMenu会自动添加ContextMenuEvent.MENU_SELET事件。
结论:InteractiveObject的contextMenu会自动添加ContextMenuEvent.MENU_SELET事件,而不管是不是ContextMenu
下面是测试代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="init()" width="600" height="300">
<mx:Script>
<![CDATA[
import flash.utils.describeType;
private function init():void
{
// NativeMenu
var menu:NativeMenu = new NativeMenu();
var menuItem:NativeMenuItem = new NativeMenuItem("litefeel.com");
menu.addItem(menuItem);
menu.addEventListener(ContextMenuEvent.MENU_SELECT, menuSelectHandler);
// Canvas 添加 NativeMenu 菜单
canvas.contextMenu = menu;
// Sprite 添加 NativeMenu 菜单
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xFFFFFF, 1);
sprite.graphics.drawRect(0, 0, 50, 50);
sprite.graphics.endFill();
sprite.contextMenu = menu;
ui.addChild(sprite);
// NativeWindow 添加 NativeMenu菜单
var nativeMenuItem:NativeMenuItem = new NativeMenuItem("lite3");
nativeMenuItem.submenu = menu;
this.nativeWindow.menu = new NativeMenu();
this.nativeWindow.menu.addItem(nativeMenuItem);
}
// 菜单选择侦听器
private function menuSelectHandler(e:ContextMenuEvent):void
{
trace("this is menuSelectHandler!");
trace("e.target = ", e.target);
trace("e.mouseTarget = ", e.mouseTarget);
}
]]>
</mx:Script>
<mx:UIComponent id="ui"/>
<mx:Canvas x="302" y="36" id="canvas" width="200" height="200" borderColor="#298CD2" backgroundColor="#D85151" />
</mx:WindowedApplication>
» 转载请注明来源:www.litefeel.com » 《NativeMenu ContextMenuEvent》
» 本文链接地址:https://www.litefeel.com/nativemenu-contextmenuevent/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
» 本文链接地址:https://www.litefeel.com/nativemenu-contextmenuevent/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
This post was last modified on 2019 年 03 月 04 日 01:07
View Comments (1)
这就是我问的....... :mrgreen: :mrgreen: :shock: