パッケージflash.ui
クラスpublic final class ContextMenu
継承ContextMenu Inheritance EventDispatcher Inheritance Object

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

ContextMenu クラスを使用すると、Flash Player コンテキストメニューのアイテムを制御できます。コンテキストメニューとは、Flash Player を右クリック (Windows) または Control キーを押しながらクリック (Macintosh) して表示されるメニューです。ContextMenu クラスのメソッドとプロパティを使用すると、カスタムメニューアイテムを追加し、ビルトインコンテキストメニューアイテムの表示 ([拡大]、[プリント] など) を制御し、新しいメニューを作成することができます。

ContextMenu オブジェクトは、特定のボタンやムービークリップ、テキストフィールドオブジェクト、またはムービー全体に関連付けることができます。この場合は、Button クラス、MovieClip クラス、TextField クラスの menu プロパティを使用します。menu プロパティの詳細については、Button.menu、MovieClip.menu、および TextField.menu を参照してください。

ContextMenu オブジェクトに新しいアイテムを追加するには、ContextMenuItem オブジェクトを作成し、そのオブジェクトを ContextMenu.customItems 配列に追加します。コンテキストメニューアイテムの作成の詳細については、ContextMenuItem クラスを参照してください。

Flash Player には 3 種類のコンテキストメニューがあります。これらは、Flash Player を右クリックしたときに表示される標準メニュー、選択可能テキストフィールドまたは編集可能テキストフィールドを右クリックしたときに表示される編集メニュー、Flash Player への SWF ファイルのロードが失敗したときに表示されるエラーメニューです。ContextMenu クラスで変更できるのは、標準メニューと編集メニューだけです。

カスタムメニューアイテムは、常に Flash Player コンテキストメニューの一番上に、つまり、表示されるどのビルトインメニューアイテムよりも上に表示されます。ビルトインメニューアイテムとカスタムメニューアイテムの間にはセパレータが表示されます。コンテキストメニューに追加できるカスタムアイテムは 15 アイテム以内です。コンテキストメニューから [設定] メニューアイテムを削除することはできません。[設定] メニューアイテムは、ユーザーがプライバシーやコンピュータの記憶領域に関連する設定を変更できるように用意されているもので、Flash に必須のメニューアイテムです。また、[Adobe Flash Player 9 について] メニューアイテムも削除できません。このメニューアイテムは、使用している Flash Player のバージョンをユーザーが確認するために必要です。

ContextMenu オブジェクトのメソッドを呼び出す前に、ContextMenu() コンストラクタを使用して ContextMenu オブジェクトを作成する必要があります。

例を表示

関連項目

ContextMenuItem クラス
flash.display.InteractiveObject.contextMenu


パブリック プロパティ
 プロパティ定義元
  builtInItems : ContextMenuBuiltInItems
ContextMenuBuiltInItems クラスの次のブール型プロパティを持つオブジェクトです。forwardAndBack、loop、play、print、quality、rewind、save、zoom。
ContextMenu
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  customItems : Array
ContextMenuItem オブジェクトの配列です。
ContextMenu
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリック メソッド
 メソッド定義元
  
ContextMenu オブジェクトを作成します。
ContextMenu
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
  
指定された ContextMenu オブジェクトのコピーを作成します。
ContextMenu
 Inherited
イベントをイベントフローに送出します。
EventDispatcher
 Inherited
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
  
[設定] を除き、指定された ContextMenu オブジェクト内のすべてのビルトインメニューアイテムを非表示にします。
ContextMenu
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し列挙できるかどうかを示します。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
 Inherited
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント 概要 定義元
 Inherited Flash Player がオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。EventDispatcher
 Inherited Flash Player がオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。EventDispatcher
   ユーザーが最初にコンテキストメニューを生成したときに、コンテキストメニューの内容が表示される前に送出されます。ContextMenu
プロパティの詳細
builtInItemsプロパティ
builtInItems:ContextMenuBuiltInItems  [read-write]

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

ContextMenuBuiltInItems クラスの次のブール型プロパティを持つオブジェクトです。このオブジェクトのプロパティには、forwardAndBackloopplayprintqualityrewindsavezoom があります。これらのプロパティを false に設定すると、対応するメニューアイテムが、指定した ContextMenu オブジェクトから削除されます。これらのプロパティは列挙することができ、デフォルトでは true に設定されています。


実装
    public function get builtInItems():ContextMenuBuiltInItems
    public function set builtInItems(value:ContextMenuBuiltInItems):void

関連項目

customItemsプロパティ 
customItems:Array  [read-write]

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

ContextMenuItem オブジェクトの配列です。配列内の各オブジェクトは、定義したカスタムコンテキストメニューアイテムを表します。このプロパティを使用して、これらのカスタムメニューアイテムを追加、削除、変更することができます。

新しいメニューアイテムを追加するには、ContextMenuItem オブジェクトを作成し、このオブジェクトを customItems 配列に追加します。このとき、Array.push() などを使用します。メニューアイテムの作成の詳細については、ContextMenuItem クラスを参照してください。


実装
    public function get customItems():Array
    public function set customItems(value:Array):void

関連項目

コンストラクタの詳細
ContextMenu()コンストラクタ
public function ContextMenu()

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

ContextMenu オブジェクトを作成します。

関連項目

メソッドの詳細
clone()メソッド
public function clone():ContextMenu

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

指定された ContextMenu オブジェクトのコピーを作成します。コピーとして作成されたオブジェクトは、元のメニューオブジェクトのすべてのプロパティを継承します。

戻り値
ContextMenu — 元のメニューオブジェクトのすべてのプロパティを持つ ContextMenu オブジェクトです。
hideBuiltInItems()メソッド 
public function hideBuiltInItems():void

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

[設定] を除き、指定された ContextMenu オブジェクト内のすべてのビルトインメニューアイテムを非表示にします。デバッグ版の Flash Player が実行されている場合、デバッグのメニューアイテムは表示されますが、リモートデバッグが有効化されていない SWF ファイルについてはグレー表示されます。

このメソッドは、標準コンテキストメニューに表示されるメニューアイテムだけを非表示にします。編集メニューおよびエラーメニューに表示されるメニューアイテムには影響しません。

このメソッドは、 my_cm .builtInItems に含まれるブール型プロパティをすべて false に設定するという形で機能します。 my_cm .builtInItems 内の対応するアイテムを true に設定すれば、個々のビルトインアイテムを選択的に表示させることができます。

関連項目

イベントの詳細
menuSelect イベント
イベントオブジェクトの型: flash.events.ContextMenuEvent
ContextMenuEvent.type property = flash.events.ContextMenuEvent

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

ユーザーが最初にコンテキストメニューを生成したときに、コンテキストメニューの内容が表示される前に送出されます。これにより、コンテキストメニューを表示する前に、プログラムによってコンテキストメニューアイテムのセットを変更できます。ユーザーがポインティングデバイスを右クリックすると、コンテキストメニューが生成されます。

例の使用法
ContextMenuExample.as

次の例では、ContextMenuExample クラスを使用して、デフォルトのコンテキストメニューアイテムをステージから削除し、新しいメニューアイテムを追加します。新しいメニューアイテムをクリックすると、ステージ上の四角形の色が変更されます。これを行うには、以下の手順を実行します。
  1. myContextMenu プロパティが宣言されて、新しい ContextMenu オブジェクトに割り当てられます。次に Sprite 型の redRectangle プロパティが宣言されます。
  2. removeDefaultItems() メソッドが呼び出されます。このメソッドによって、すべてのビルトインコンテキストメニューアイテムが削除されます。ただし、[プリント] を除きます。
  3. addCustomMenuItems() メソッドが呼び出され、Red to Black メニュー選択というメニューアイテムが defaultItems 配列に配置されます。このとき、配列の push() メソッドが使用されます。menuItemSelect イベントリスナーが ContextMenuItem オブジェクトに追加されます。関連付けられるメソッドは menuItemSelectHandler() という名前です。このメソッドは、trace() を使用してステートメントを出力します。ステートメントが出力されるのは、コンテキストメニューにアクセスし、Red to Black を選択した場合です。また、赤色の四角形は削除されて黒色の四角形に置換されます。
  4. タイプが menuSelect のイベントリスナーが、関連する menuSelectHandler メソッドと共に追加されます。このメソッドは、コンテキストメニューアイテムが開かれるたびに trace() を使用して 3 つのステートメントを出力します。
  5. 次に、addChildren() は、赤色の四角形を描画し、それを表示リストに追加します。この四角形は、すぐに表示リストに表示されます。
  6. 最後に、myContextMenuredRectangle スプライトのコンテキストメニューに割り当てられ、マウスポインタが四角形上に置かれたときのみカスタムコンテキストメニューが表示されるようになります。
package {
    import flash.ui.ContextMenu;
    import flash.ui.ContextMenuItem;
    import flash.ui.ContextMenuBuiltInItems;
    import flash.events.ContextMenuEvent;
    import flash.events.ContextMenuEvent;
    import flash.display.Sprite;
    import flash.display.Shape;
    import flash.text.TextField;

    public class ContextMenuExample extends Sprite {
        private var myContextMenu:ContextMenu;
        private var menuLabel:String = "Reverse Colors";
        private var textLabel:String = "Right Click";
        private var redRectangle:Sprite;
        private var label:TextField;
        private var size:uint = 100;
        private var black:uint = 0x000000;
        private var red:uint = 0xFF0000;

        public function ContextMenuExample() {
            myContextMenu = new ContextMenu();
            removeDefaultItems();
            addCustomMenuItems();
            myContextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, menuSelectHandler);

            addChildren();
            redRectangle.contextMenu = myContextMenu;
        }

        private function addChildren():void {
            redRectangle = new Sprite();
            redRectangle.graphics.beginFill(red);
            redRectangle.graphics.drawRect(0, 0, size, size);
            addChild(redRectangle);
            redRectangle.x = size;
            redRectangle.y = size;
            label = createLabel();
            redRectangle.addChild(label);
        }

        private function removeDefaultItems():void {
            myContextMenu.hideBuiltInItems();
            var defaultItems:ContextMenuBuiltInItems = myContextMenu.builtInItems;
            defaultItems.print = true;
        }

        private function addCustomMenuItems():void {
            var item:ContextMenuItem = new ContextMenuItem(menuLabel);
            myContextMenu.customItems.push(item);
            item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuItemSelectHandler);
        }

        private function menuSelectHandler(event:ContextMenuEvent):void {
            trace("menuSelectHandler: " + event);
        }

        private function menuItemSelectHandler(event:ContextMenuEvent):void {
            trace("menuItemSelectHandler: " + event);
            var textColor:uint = (label.textColor == black) ? red : black;
            var bgColor:uint = (label.textColor == black) ? black : red;
            redRectangle.graphics.clear();
            redRectangle.graphics.beginFill(bgColor);
            redRectangle.graphics.drawRect(0, 0, size, size);
            label.textColor = textColor;
        }

        private function createLabel():TextField {
            var txtField:TextField = new TextField();
            txtField.text = textLabel;
            return txtField;
        }
    }
}




 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/ui/ContextMenu.html