3

AS3 とフラッシュを使用して右クリックで ContextMenu を開いたときに、クリックの場所を取得する必要があるという問題を解決しようとしています。

MouseEvent.Context_Menu を使用してみました:

mapSprite.addEventListener(MouseEvent.CONTEXT_MENU, OnContextMenuOpening);

これは右クリックで起動しますが、コンテキスト メニューは開きません。

MosueEvent.Right_Click も使用してみました:

mapSprite.addEventListener(MouseEvent.RIGHT_CLICK, OnContextMenuOpening);

右クリックで起動しますが、コンテキストメニューが開かないようにします。

誰でも問題について何か洞察がありますか?

4

3 に答える 3

1

Atriace の答えは基本的には正しいですが、実際の質問に直接対応していないので、すぐに理解できませんでした。以下は、彼のソリューションを少し拡張したものです。

private function setupSample():void
{
     // NOTE: Sample assumes that I have a TextField named _myTextField defined elsewhere.
     _myTextField.contextMenu = new ContextMenu();
     _myTextField.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, hContextMenuSelect);
}

private function hContextMenuSelect(pEvent:ContextMenuEvent):void
{
      var x:Number = pEvent.mouseTarget.mouseX;
      var y:Number = pEvent.mouseTarget.mouseY;
}

このアプローチを使用すると、コンテキスト メニューが実際に表示されますが、マウス クリックの座標にもアクセスできます。ContextMenuEvent.MENU_SELECT リスナーをコンテキスト メニューに直接追加し、リスナー引数からポイントを抽出するだけです。マウスの位置は、ContextMenuEvent を通じて利用できることに注意してください。

于 2013-09-09T19:48:52.820 に答える