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");
  });

として、無事解決