| パッケージ | flash.ui |
| public final class ContextMenu | |
| 継承 | ContextMenu EventDispatcher Object |
ContextMenu オブジェクトは、特定のボタンやムービークリップ、テキストフィールドオブジェクト、またはムービー全体に関連付けることができます。その際、Button クラス、MovieClip クラス、TextField クラスの menu プロパティを使用します。menu プロパティの詳細については、Button.menu、MovieClip.menu、および TextField.menu を参照してください。
Flex では、アプリケーション内の最上位レベルのコンポーネントだけにコンテキストメニューがあります。たとえば、DataGrid コントロールが TabNavigator コンテナまたは VBox コンテナの子である場合、DataGrid コントロールは独自のコンテキストメニューを持つことができません。
ContextMenu オブジェクトに新しいアイテムを追加するには、ContextMenuItem オブジェクトを作成し、そのオブジェクトを ContextMenu.customItems 配列に追加します。コンテキストメニューアイテムの作成の詳細については、ContextMenuItem クラスを参照してください。
Flash Player には 3 種類のコンテキストメニューがあります。これらは、Flash Player を右クリックしたときに表示される標準メニュー、選択可能テキストフィールドまたは編集可能テキストフィールドを右クリックしたときに表示される編集メニュー、Flash Player への SWF ファイルのロードが失敗したときに表示されるエラーメニューです。ContextMenu クラスで修正できるのは、標準メニューと編集メニューだけです。
カスタムメニューアイテムは、常に Flash Player コンテキストメニューの一番上に、つまり、どの可視ビルトインメニューアイテムよりも上に表示されます。ビルトインメニューアイテムとカスタムメニューアイテムの間にはセパレータが表示されます。コンテキストメニューに追加できるカスタムアイテムは 15 アイテム以内です。コンテキストメニューから [設定] メニューアイテムを削除することはできません。[設定] メニューアイテムは、ユーザーがプライバシーやコンピュータの記憶領域に作用する設定にアクセスできるようにするための、Flash に必須のメニューアイテムです。また、使用している Flash Player のバージョンをユーザーが確認するために必要な [Macromedia Flash Player 8 について] メニューアイテムも削除できません。
ContextMenu オブジェクトのメソッドを呼び出す前に、ContextMenu() コンストラクタを使用して ContextMenu オブジェクトを作成する必要があります。
関連項目
| プロパティ | 定義 | ||
|---|---|---|---|
| builtInItems : ContextMenuBuiltInItems
ContextMenuBuiltInItems クラスの次のブール型プロパティを持つオブジェクトです。
forwardAndBack、loop、play、print、quality、rewind、save、および zoom。 | ContextMenu | ||
![]() | constructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
| Object | |
| customItems : Array
ContextMenuItem オブジェクトの配列です。
| ContextMenu | ||
![]() | prototype : Object
[static]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
| Object | |
| メソッド | 定義 | ||
|---|---|---|---|
| ContextMenu()
ContextMenu オブジェクトを作成します。
| ContextMenu | ||
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
| EventDispatcher | |
| clone():ContextMenu
指定された ContextMenu オブジェクトのコピーを作成します。
| ContextMenu | ||
![]() | dispatchEvent(event:Event):Boolean
イベントをイベントフローに送出します。
| EventDispatcher | |
![]() | hasEventListener(type:String):Boolean
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
| EventDispatcher | |
![]() | hasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
| Object | |
| hideBuiltInItems():void
[設定] を除き、指定された ContextMenu オブジェクト内のすべてのビルトインメニューアイテムを非表示にします。
| ContextMenu | ||
![]() | isPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | |
![]() | propertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
| Object | |
![]() | removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
| EventDispatcher | |
![]() | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | |
![]() | toString():String
指定されたオブジェクトのストリング表現を返します。
| Object | |
![]() | valueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
| Object | |
![]() | willTrigger(type:String):Boolean
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
| EventDispatcher | |
| イベント | 一覧 | 定義 | ||
|---|---|---|---|---|
| menuSelect | ユーザーが最初にコンテキストメニューを生成したときに、コンテキストメニューの内容が表示される前に送出されます。 | ContextMenu | ||
| builtInItems | プロパティ |
builtInItems:ContextMenuBuiltInItems [read-write]
ContextMenuBuiltInItems クラスの次のブール型プロパティを持つオブジェクトです。forwardAndBack、loop、play、print、quality、rewind、save、および zoom。これらのプロパティを false に設定すると、対応するメニューアイテムが、指定した ContextMenu オブジェクトから削除されます。これらのプロパティは列挙することができ、デフォルトでは true に設定されています。
public function get builtInItems():ContextMenuBuiltInItems
public function set builtInItems(value:ContextMenuBuiltInItems):void
関連項目
| customItems | プロパティ |
customItems:Array [read-write]ContextMenuItem オブジェクトの配列です。配列内の各オブジェクトは、定義したカスタムコンテキストメニューアイテムを表します。このプロパティを使用して、これらのカスタムメニューアイテムを追加、削除、変更することができます。
新しいメニューアイテムを追加するには、ContextMenuItem オブジェクトを作成します。次に Array.push() などを使用して、作成したオブジェクトを customItems 配列に追加します。メニューアイテムの作成の詳細については、ContextMenuItem クラスを参照してください。
public function get customItems():Array
public function set customItems(value:Array):void
関連項目
| ContextMenu | () | コンストラクタ |
public 関数 ContextMenu()ContextMenu オブジェクトを作成します。
関連項目
| clone | () | メソッド |
public function clone():ContextMenu指定された ContextMenu オブジェクトのコピーを作成します。コピーとして作成されたオブジェクトは、元のメニューオブジェクトのすべてのプロパティを継承します。
戻り値ContextMenu —
元のメニューオブジェクトのすべてのプロパティを持つ ContextMenu オブジェクトです。
|
| hideBuiltInItems | () | メソッド |
public function hideBuiltInItems():void[設定] を除き、指定された ContextMenu オブジェクト内のすべてのビルトインメニューアイテムを非表示にします。デバッグ版の Flash Player が実行されている場合、デバッグのメニューアイテムは表示されますが、リモートデバッグが有効化されていない SWF ファイルについてはグレー表示されます。
このメソッドは、標準コンテキストメニューに表示されるメニューアイテムだけを非表示にします。編集メニューおよびエラーメニューに表示されるメニューアイテムには影響しません。
このメソッドは、my_cm.builtInItems のすべてのブール型プロパティを false に設定することにより機能します。ビルトインアイテムを個別に表示するには、my_cm.builtInItems のそのアイテムに対応するメンバーを true に設定します。
関連項目
| menuSelect | event |
flash.events.ContextMenuEvent
flash.events.ContextMenuEvent.MENU_SELECT
ユーザーが最初にコンテキストメニューを生成したときに、コンテキストメニューの内容が表示される前に送出されます。これにより、コンテキストメニューを表示する前に、プログラムによってコンテキストメニューアイテムのセットを変更できます。ユーザーは、ポインティングデバイスを右クリックすることにより、コンテキストメニューを生成します。
menuSelect イベントオブジェクトの type プロパティの値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
contextMenuOwner | メニューが関連付けられる表示リストオブジェクトです。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
mouseTarget | ユーザーがコンテキストメニューを表示するために右クリックした表示リストオブジェクトです。 |
target | 表示される ContextMenu オブジェクトです。target は、必ずしもイベントリスナーを登録した表示リスト内のオブジェクトとは限りません。現在イベントを処理している表示リスト内のオブジェクトにアクセスするには、currentTarget プロパティを使用します。 |
ContextMenuExample
を使用して、デフォルトのコンテキストメニューアイテムをステージから削除し、新しいメニューアイテムを追加します。新しいメニューアイテムを
クリックすると、ステージ上の四角形の色が変更されます。 ここでは次の手順を
実行します。
myContextMenu が宣言され、新しい ContextMenu
オブジェクトに割り当てられ、Sprite 型のプロパティ redRectangle が宣言されます。removeDefaultItems() が呼び出されます。このメソッドによって、すべてのビルトインコンテキスト
メニューアイテムが削除されます。ただし、プリントを除きます。addCustomMenuItems() が呼び出されます。このメソッドによって、
Red to Black メニュー選択という名前のアイテムが defaultItems 配列に配置されます。配列の
push() メソッドが使用されます。menuItemSelect イベントリスナーが
ContextMenuItem オブジェクトに追加され、関連付けられるメソッドは menuItemSelectHandler() という名前です。
このメソッドは trace() を使用して、
コンテキストメニューがアクセスされて Red to Black が選択されるたびに、いくつかのステートメントを出力します。また、赤い四角形は
削除されて黒色の四角形に置換されます。menuSelect のイベントリスナーが、
関連するメソッド menuSelectHandler と共に追加されます。このメソッドは、
trace() を使用して、コンテキストメニューのアイテムが開かれるたびに、3 つのステートメントを単純に出力します。addChildren() は、赤色の四角形を描画し、それを
表示リストに追加します。この四角形は、表示リストに即座に表示されます。myContextMenu が redRectangle スプライトのコンテキストメニューに割り当てられます。
このため、カスタムコンテキストメニューが表示されるのは、マウスポインタが四角形の上にある場合のみです。
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;
}
}
}