パッケージ | flash.ui |
クラス | public final class ContextMenu |
継承 | ContextMenu NativeMenu EventDispatcher Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
モバイルブラウザーのサポート:このクラスはモバイルブラウザーではサポートされません。
AIR プロファイルのサポート:この機能はモバイルデバイスまたは AIR for TV デバイスではサポートされません。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。
Flash Player では、ユーザーは Flash Player を右クリックするか(Windows または Linux)、Control キーを押しながらクリックする(Macintosh)ことにより、コンテキストメニューを開きます。ContextMenu クラスのメソッドとプロパティを使用すると、カスタムメニューアイテムを追加し、ビルトインコンテキストメニューアイテム([ズームイン]、[プリント] など)の表示を制御し、新しいメニューを作成することができます。AIR には、ビルトインのアイテムや標準のコンテキストメニューはありません。
Flash Professional では、ContextMenu オブジェクトは、特定のボタンやムービークリップ、テキストフィールドオブジェクト、またはムービー全体に関連付けることができます。これを行うには、InteractiveObject クラスの contextMenu
プロパティを使用します。
Flex または Flash Builder では、アプリケーション内の最上位レベルのコンポーネントだけにコンテキストメニューがあります。例えば、DataGrid コントロールが TabNavigator コンテナまたは VBox コンテナの子である場合、DataGrid コントロールは独自のコンテキストメニューを持つことができません。
ContextMenu オブジェクトに新しいアイテムを追加するには、ContextMenuItem オブジェクトを作成し、そのオブジェクトを ContextMenu.customItems
配列に追加します。コンテキストメニューアイテムの作成について詳しくは、ContextMenuItem クラスを参照してください。
Flash Player には 3 種類のコンテキストメニューがあります。これらは、Flash Player を右クリックしたときに表示される標準メニュー、選択可能テキストフィールドまたは編集可能テキストフィールドを右クリックしたときに表示される編集メニュー、Flash Player への SWF ファイルのロードが失敗したときに表示されるエラーメニューです。ContextMenu クラスで修正できるのは、標準メニューと編集メニューだけです。AIR に表示されるのは、編集メニューだけです。
カスタムメニューアイテムは、常に Flash Player コンテキストメニューの一番上に、つまり、表示されるどのビルトインメニューアイテムよりも上に表示されます。ビルトインメニューアイテムとカスタムメニューアイテムの間にはセパレーターが表示されます。 コンテキストメニューから「設定」メニューアイテムを削除することはできません。「設定」メニューアイテムは、ユーザーがプライバシーやコンピューターの記憶領域に関連する設定を変更できるように用意されているもので、Flash に必須のメニューアイテムです。また、使用している Flash Player のバージョンをユーザーが確認するために必要な「Adobe Flash Player x について」メニューアイテムも削除できません。 (AIR では、「設定」および「Adobe Flash Player x について」メニューのビルトインアイテムは使用されません。)
Flash Player のコンテキストメニューに追加できるカスタムアイテムは 15 アイテム以内です。AIR には、コンテキストメニューのアイテム数に対する明示的な制限はありません。
ContextMenu オブジェクトのメソッドを呼び出す前に、ContextMenu()
コンストラクターを使用して ContextMenu オブジェクトを作成する必要があります。
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
builtInItems : ContextMenuBuiltInItems
ContextMenuBuiltInItems クラスのインスタンスには、forwardAndBack、loop、play、print、quality、rewind、save、および zoom の各プロパティがあります。 | ContextMenu | ||
clipboardItems : ContextMenuClipboardItems
ContextMenuClipboardItems クラスには、cut、copy、paste、delete、selectAll の各プロパティがあります。 | ContextMenu | ||
clipboardMenu : Boolean
クリップボードメニューを使用するかどうかを指定します。 | ContextMenu | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
customItems : Array
ContextMenuItem オブジェクトの配列です。 | ContextMenu | ||
isSupported : Boolean [静的] [読み取り専用]
現在のプラットフォームで ContextMenu クラスがサポートされている場合、isSupported プロパティは true に設定されます。サポートされていない場合は、false に設定されます。 | ContextMenu | ||
items : Array [オーバーライド]
このメニューのカスタムアイテムの配列です。 | ContextMenu | ||
link : URLRequest
リンクの URLRequest です。 | ContextMenu | ||
numItems : int [オーバーライド] [読み取り専用]
このメニュー内のアイテムの数です。 | ContextMenu | ||
parent : NativeMenu [読み取り専用]
親メニューです。 | NativeMenu |
メソッド | 定義元 | ||
---|---|---|---|
ContextMenu オブジェクトを作成します。 | ContextMenu | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | ||
メニューの下部に、メニューアイテムを追加します。 | NativeMenu | ||
[オーバーライド]
メニューの下部に、メニューアイテムを追加します。 | ContextMenu | ||
新しいメニューアイテムを挿入して、メニューにサブメニューを追加します。 | NativeMenu | ||
指定された位置に新しいメニューアイテムを挿入して、メニューにサブメニューを追加します。 | NativeMenu | ||
[オーバーライド]
指定された ContextMenu オブジェクトのコピーを作成します。 | ContextMenu | ||
[オーバーライド]
このメニューが、指定されたメニューアイテムを含むかどうかを報告します。 | ContextMenu | ||
イベントをイベントフローに送出します。 | EventDispatcher | ||
[オーバーライド]
このメニューを、指定された位置にポップアップ表示します。 | ContextMenu | ||
[オーバーライド]
指定されたインデックス位置にあるメニューアイテムを取得します。 | ContextMenu | ||
指定された名前を持つメニューアイテムを取得します。 | NativeMenu | ||
[オーバーライド]
指定されたアイテムの位置を取得します。 | ContextMenu | ||
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
「設定」を除き、指定された ContextMenu オブジェクト内のすべてのビルトインメニューアイテムを非表示にします。 | ContextMenu | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
[オーバーライド]
メニューからすべてのアイテムを削除します。 | ContextMenu | ||
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | ||
指定されたメニューアイテムを削除します。 | NativeMenu | ||
[オーバーライド]
指定されたインデックス位置にあるメニューアイテムを削除して返します。 | ContextMenu | ||
指定された位置に、メニューアイテムを移動します。 | NativeMenu | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher |
イベント | 概要 | 定義元 | ||
---|---|---|---|---|
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | |||
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | |||
メニューが表示される直前に、この NativeMenu オブジェクトから送出されます。 | NativeMenu | |||
ユーザーが最初にコンテキストメニューを生成したときに、コンテキストメニューの内容が表示される前に送出されます。 | ContextMenu | |||
ショートカットキーが押され、メニューが表示される直前に、NativeMenu オブジェクトから送出されます。 | NativeMenu | |||
いずれかのメニューアイテム、またはその子孫のサブメニューのいずれかのアイテムが選択された場合に、この NativeMenu オブジェクトから送出されます。 | NativeMenu |
builtInItems | プロパティ |
builtInItems:ContextMenuBuiltInItems
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
ContextMenuBuiltInItems クラスのインスタンスには、forwardAndBack
、loop
、play
、print
、quality
、rewind
、save
および zoom
の各プロパティがあります。これらのプロパティを false
に設定すると、対応するメニューアイテムが、指定した ContextMenu オブジェクトから削除されます。これらのプロパティは列挙することができ、デフォルトでは true
に設定されています。
注意:AIR では、コンテキストメニューにビルトインアイテムはありません。
実装
public function get builtInItems():ContextMenuBuiltInItems
public function set builtInItems(value:ContextMenuBuiltInItems):void
関連する API エレメント
clipboardItems | プロパティ |
clipboardItems:ContextMenuClipboardItems
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
ContextMenuClipboardItems クラスのインスタンスには、cut
、copy
、paste
、delete
、selectAll
の各プロパティがあります。これらのプロパティのいずれかを false
に設定すると、クリップボードメニューの対応するアイテムが無効になります。
実装
public function get clipboardItems():ContextMenuClipboardItems
public function set clipboardItems(value:ContextMenuClipboardItems):void
関連する API エレメント
例 ( この例の使用方法 )
clipboardItems
プロパティ(ContextMenu
オブジェクトのプロパティ)の使用方法を示します。 ContextMenu
を作成し、その clipboardMenu
プロパティを true
に設定します。MENU_SELECT
イベント(通常は右クリック)のイベントハンドラーを追加し、そのメニューを表示オブジェクトに割り当てます。この場合、copy
および paste
メニューを使用できます。
package { import flash.ui.ContextMenu; import flash.events.ContextMenuEvent; import flash.display.Sprite; public class ContextMenuClipboardItemsExample extends Sprite { public function ContextMenuClipboardItemsExample() { var myContextMenu:ContextMenu = new ContextMenu(); myContextMenu.clipboardMenu = true; myContextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, menuSelectHandler); var rc:Sprite = new Sprite(); rc.graphics.beginFill(0xDDDDDD); rc.graphics.drawRect(0,0,100,30); addChild(rc); rc.contextMenu = myContextMenu; } function menuSelectHandler(event:ContextMenuEvent):void { event.contextMenuOwner.contextMenu.clipboardItems.copy = true; event.contextMenuOwner.contextMenu.clipboardItems.paste = true; } } }
clipboardMenu | プロパティ |
clipboardMenu:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
クリップボードメニューを使用するかどうかを指定します。この値が true
の場合、clipboardItems
プロパティはクリップボードメニューで、どのアイテムが有効または無効になっているかを決定します。
link
プロパティが null 以外の場合、この clipBoardMenu
プロパティは無視されます。
実装
public function get clipboardMenu():Boolean
public function set clipboardMenu(value:Boolean):void
customItems | プロパティ |
customItems:Array
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
ContextMenuItem オブジェクトの配列です。配列内の各オブジェクトは、定義したカスタムコンテキストメニューアイテムを表します。このプロパティを使用して、これらのカスタムメニューアイテムを追加、削除、変更することができます。
新しいメニューアイテムを追加するには、ContextMenuItem オブジェクトを作成し、このオブジェクトを customItems
配列に追加します。このとき、Array.push()
などを使用します。メニューアイテムの作成について詳しくは、ContextMenuItem クラスを参照してください。
実装
public function get customItems():Array
public function set customItems(value:Array):void
関連する API エレメント
isSupported | プロパティ |
items | プロパティ |
link | プロパティ |
link:URLRequest
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
リンクの URLRequest
です。このプロパティが null
の場合、通常のコンテキストメニューが表示されます。このプロパティが null
でない場合、リンクのコンテキストメニューが表示され、指定された url で動作します。
link
が指定されている場合、clipboardMenu
プロパティは無視されます。
デフォルト値は null
です。
実装
public function get link():URLRequest
public function set link(value:URLRequest):void
numItems | プロパティ |
ContextMenu | () | コンストラクター |
public function ContextMenu()
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
ContextMenu オブジェクトを作成します。
関連する API エレメント
addItemAt | () | メソッド |
override public function addItemAt(item:NativeMenuItem, index:int):NativeMenuItem
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
メニューの下部に、メニューアイテムを追加します。
コンテキストメニューを作成する場合は、NativeMenuItem または ContextMenuItem オブジェクトのいずれかを追加できます。ただし、メニュー内のすべてのアイテムが同じプロパティを持つようにするため、コンテキストメニューでは 1 つの型のオブジェクトのみを使用することをお勧めします。
パラメーター
item:NativeMenuItem — メニューの下部に追加するアイテムです。
| |
index:int |
NativeMenuItem |
例外
ArgumentError — item が null の場合。
| |
ArgumentError — item が別のメニューのメンバーである場合。
|
clone | () | メソッド |
override public function clone():NativeMenu
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
指定された ContextMenu オブジェクトのコピーを作成します。このコピーは、元のメニューオブジェクトのすべてのプロパティを継承しています。
戻り値NativeMenu — 元のメニューオブジェクトのすべてのプロパティが設定された ContextMenu オブジェクトです。
|
containsItem | () | メソッド |
override public function containsItem(item:NativeMenuItem):Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
このメニューが、指定されたメニューアイテムを含むかどうかを報告します。
パラメーター
item:NativeMenuItem — 検索対象のアイテムです。
|
Boolean — true (item がこのメニューに存在する場合)。
|
display | () | メソッド |
override public function display(stage:Stage, stageX:Number, stageY:Number):void
ランタイムバージョン: | AIR 1.0 |
このメニューを、指定された位置にポップアップ表示します。
注意:Flash Player では、このメソッドはサポートされていません。
パラメーター
stage:Stage — このメニューが表示される Stage オブジェクトです。
| |
stageX:Number — このメニューを表示するステージの起点を基準とした、水平方向のピクセル数です。
| |
stageY:Number — このメニューが表示されるステージの起点を基準にした垂直方向のピクセル数です。
|
getItemAt | () | メソッド |
override public function getItemAt(index:int):NativeMenuItem
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
指定されたインデックス位置にあるメニューアイテムを取得します。
パラメーター
index:int — 0 から始まる、返すアイテムの位置です。
|
NativeMenuItem — メニューの指定された位置にあるアイテムです。
|
例外
RangeError — index が、メニューの items 配列の範囲外の場合。
|
getItemIndex | () | メソッド |
override public function getItemIndex(item:NativeMenuItem):int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
指定されたアイテムの位置を取得します。
パラメーター
item:NativeMenuItem — 検索対象の NativeMenuItem オブジェクトです。
|
int — 指定されたアイテムの 0 から始まるこのメニューでの位置、または -1 (アイテムがこのメニューに存在しない場合)です。
|
hideBuiltInItems | () | メソッド |
public function hideBuiltInItems():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
「設定」を除き、指定された ContextMenu オブジェクト内のすべてのビルトインメニューアイテムを非表示にします。デバッガー版の Flash Player が実行されている場合、デバッグのメニューアイテムは表示されますが、リモートデバッグが有効化されていない SWF ファイルについては、デバッグのメニューアイテムはグレー表示されます。
このメソッドは、標準コンテキストメニューに表示されるメニューアイテムだけを非表示にします。編集メニューおよびエラーメニューに表示されるメニューアイテムには影響しません。
このメソッドは、 my_cm
.builtInItems
に含まれるブール型プロパティをすべて false
に設定するという形で機能します。 my_cm
.builtInItems
内の対応するアイテムを true
に設定すれば、個々のビルトインアイテムを選択的に表示させることができます。
注意:AIR では、コンテキストメニューにビルトインアイテムはありません。このメソッドを呼び出しても無効です。
関連する API エレメント
removeAllItems | () | メソッド |
removeItemAt | () | メソッド |
override public function removeItemAt(index:int):NativeMenuItem
ランタイムバージョン: | AIR 1.0 |
指定されたインデックス位置にあるメニューアイテムを削除して返します。
パラメーター
index:int — 0 から始まる、削除するアイテムの位置です。
|
NativeMenuItem — 削除された NativeMenuItem オブジェクトです。
|
menuSelect | イベント |
flash.events.ContextMenuEvent
プロパティ ContextMenuEvent.type =
flash.events.ContextMenuEvent.MENU_SELECT
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
ユーザーが最初にコンテキストメニューを生成したときに、コンテキストメニューの内容が表示される前に送出されます。これにより、コンテキストメニューを表示する前に、プログラムによってコンテキストメニューアイテムのセットを変更できます。ユーザーは、ポインティングデバイスを右クリックすることにより、コンテキストメニューを生成します。
type
プロパティ(menuSelect
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
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.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; } } }
Tue Jun 12 2018, 10:34 AM Z