Flex/AIRでのコンテキストメニュー実装
いやいや、ハマりましたよ…名前が似てるっつうかまぎらわしいっつうか…
var contextItem:ContextMenuItem = new ContextMenuItem("hoge"); hoge.addEventListener(ContextMenuEvent.MENU_SELECT, function(eve:ContextMenuEvent):void { trace("selected context menu hoge"); }); var context:ContextMenu = new ContextMenu(); context.customItems.push(hoge); //ビューのcontextMenuに新しく作ったcontextMenuオブジェクトを登録 this._view.contextMenu = context;
これで無名関数のtraceが実行されるかと思いきや、実行されない。なぜ!と思ってリファレンスみたらContextMenuEvent.MENU_SELECTとContextMenuEvent.MENU_ITEM_SELECTは全然別物だった…まあ、私の不注意と言えば不注意なんですが…
menuItemSelect
イベントオブジェクトの型: flash.events.ContextMenuEvent
ContextMenuEvent.type property = flash.events.ContextMenuEvent.MENU_ITEM_SELECTユーザーがコンテキストメニューからアイテムを選択したときに送出されます。ユーザーは、ポインティングデバイスの第 2 ボタンをクリックすることにより、コンテキストメニューを生成します。
menuSelect
イベントオブジェクトの型: flash.events.ContextMenuEvent
ContextMenuEvent.type property = flash.events.ContextMenuEventユーザーが最初にコンテキストメニューを生成したときに、コンテキストメニューの内容が表示される前に送出されます。
ということなので
var contextItem:ContextMenuItem = new ContextMenuItem("hoge"); hoge.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(eve:ContextMenuEvent):void { trace("selected context menu hoge"); });
として、無事解決