右クリックメニューについて
・ | コンテキストメニューとは? |
・ | コンテキストメニューを非表示にする |
・ | コンテキストメニューが表示されるか調べる(Flash 7 以降) |
・ | コンテキストメニューに項目を追加する(Flash 7 以降) |
・ | インスタンスにコンテキストメニューを登録する(Flash 7 以降) |
コンテキストメニューとは?
■ コンテキストメニューとは?
マウスを右クリックしたときに、ポップアップで表示されるメニューをコンテキストメニューといいます。
■ コンテキストメニュークラスを使うと?
コンテキストメニュークラスを使用すると、「設定」以外の項目を非表示にする事ができます。
好きな項目を、最大 15 個まで追加登録する事が可能です。
コンテキストメニューを非表示にする
■コンテキストメニューを非表示にする
コンテキストメニュー自体を非表示にする事はできません。
しかし、項目の一部を非表示にする事は可能です。
■メニューを非表示にする(Flash 3 以降の場合)
■ブラウザで再生時にメニューを非表示にする
<EMBED> タグの menu 属性を false に設定します。
「設定」以外のコンテキストメニューが非表示になります。
メニューを非表示にする
<embed
src="menu_00.swf"
quality="high"
bgcolor="#ffffff"
width="550"
height="400"
name="menu_00"
align="middle"
allowScriptAccess="sameDomain"
allowFullScreen="false"
menu="false"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer_jp" />
■スタンドアローンプレイヤー再生時にメニューを非表示にする
fscommand() 関数を使用して、"showmenu" コマンドと "false" パラメータを送ります。
スタンドアローンプレイヤーで「設定」以外のコンテキストメニューが非表示になります。
またメニューバーも非表示になります。
メニューを非表示に設定するコマンドを送る
fscommand("showmenu", "false");
■ メニューを非表示にする(Flash 6 以降の場合)
■メニューを非表示にする
Stage.showMenu プロパティに false をセットします。
「設定」以外のコンテキストメニューが非表示になります。
メニューを非表示に設定する
Stage.showMenu = false;
■ メニュー項目を個別に非表示にする(Flash 7 以降の場合)
1.コンテキストメニューインスタンスを作成する
new 演算子を使って、ContextMenu クラスをインスタンス化します。
コンテキストメニューオブジェクトを作成
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
2.ビルトインメニューの設定を行う
ContextMenu クラスの builtInItems プロパティに、オブジェクトが格納されています。
オブジェクトには、以下のプロパティがあります。
true をセットすると可視表示となります。
false をセットすると非表示となります。
プロパティ | 説明 |
forward_back | 先送り、戻る |
loop | ループ再生 |
forward_back | 再生 |
プリント | |
quality | 画質 |
rewind | 巻き戻し |
zoom | 拡大 |
ビルトインメニューの設定を行う
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
// ビルトインメニュー設定用オブジェクトを取得
var builtin_items = context_menu.builtInItems;
// 各アイテムの可視表示の設定
builtin_items.forward_back = false; // 先送り、戻る
builtin_items.loop = false; // ループ再生
builtin_items.play = false; // 再生
builtin_items.print = false; // プリント
builtin_items.quality = false; // 画質
builtin_items.rewind = false; // 巻き戻し
builtin_items.zoom = false; // 拡大
hideBuiltInItems() メソッドを呼び出すと、すべてのアイテムが非表示となります。
すべてのビルトインメニューを非表示に設定する
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
// すべてのビルトインメニューを非表示に設定する
context_menu.hideBuiltInItems();
3.インスタンスにコンテキストメニューを登録する
インスタンスにコンテキストメニューを登録する方法は、こちらで解説しています。
_root に登録する例です。
_root に、コンテキストメニューオブジェクトを渡す
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
// ビルトインメニュー設定用オブジェクトを取得
var builtin_items = context_menu.builtInItems;
// 各アイテムの可視表示の設定
builtin_items.forward_back = false; // 先送り、戻る
builtin_items.loop = false; // ループ再生
builtin_items.play = false; // 再生
builtin_items.print = false; // プリント
builtin_items.quality = false; // 画質
builtin_items.rewind = false; // 巻き戻し
builtin_items.zoom = false; // 拡大
// ルートにコンテキストメニューを登録
_root.menu = context_menu;
コンテキストメニューが表示されるか調べる(Flash 7 以降)
サンプルをダウンロード
コンテキストメニューが表示されるか調べる
1.コンテキストメニューインスタンスを作成する
new 演算子を使って、ContextMenu クラスをインスタンス化します。
コンテキストメニューオブジェクトを作成
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
2.コールバック関数を登録する
コンテキストメニューが表示される瞬間を調べるには、onSelect イベントを使用します。
登録したコールバック関数の、
第01引数から、マウス座標と当たったインスタンスの参照が取得できます。
第02引数から、ContextMenu オブジェクトが取得できます。
コンテキストメニューにプロパティを設定する
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu ();
// コンテキストメニューが表示される瞬間に実行されるイベント
context_menu.onSelect = function (obj,menu){
trace("インスタンスの参照:" + obj);
};
3.インスタンスにコンテキストメニューを登録する
インスタンスにコンテキストメニューを登録する方法は、こちらで解説しています。
_root に登録する例です。
_root に、コンテキストメニューオブジェクトを渡す
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
// コンテキストメニューが表示される瞬間に実行されるイベント
context_menu.onSelect = function (obj,item_menu){
trace("コンテキストメニューが表示される瞬間");
};
// ルートにコンテキストメニューを登録
_root.menu = context_menu;
コンテキストメニューに項目を追加する(Flash 7 以降)
サンプルをダウンロード
コンテキストメニューアイテムを作成する
1.コンテキストメニューアイテムオブジェクトを作成する
new 演算子を使って、ContextMenuItem クラスをインスタンス化します。
ここでは、引数の説明は省略します。
new ContextMenuItem ( caption , onSelect ) :ContextMenuItem
第01引数(略可) | String | caption プロパティに相当 |
第02引数(略可) | Function | onSelect イベントに相当 |
戻り値 | ColorTransform | ContextMenuItem オブジェクト |
コンテキストメニューアイテムを作成
// コンテキストメニューアイテムオブジェクトを作成
var menu_item = new ContextMenuItem();
2.プロパティを設定する
ContextMenuItem クラスは、以下プロパティがあります。
プロパティ | 型 | 説明 |
caption | String | 表示する文字を指定(キャプション名) |
enabled | Boolean | 通常表示の場合 true 、淡色表示の場合 false |
separatorBefore | Boolean | このメニューの1つ上にセパレータ(区切り線)を付ける |
visible | Boolean | 表示する場合 true , 非表示にする場合 false |
コンテキストメニューアイテムのプロパティを設定する
// コンテキストメニューアイテムオブジェクトを作成
var menu_item = new ContextMenuItem();
// プロパティの設定
menu_item.caption = "表示テスト"; // キャプション名
menu_item.enabled = true; // 有効か
menu_item.separatorBefore = false; // 1つ上にセパレータを付ける
menu_item.visible = true; // 可視表示するか
3.コールバック関数を登録する
メニューが選択されたか調べるには、onSelect イベントを使用します。
onSelect イベントに関数を登録していない場合、メニューアイテムは表示されません。
登録したコールバック関数の、
第01引数から、マウス座標と当たったインスタンスの参照が取得できます。
第02引数から、ContextMenuItem オブジェクトが取得できます。
メニューが選択されたか調べる
// コンテキストメニューアイテムオブジェクトを作成
var menu_item = new ContextMenuItem();
// プロパティの設定
menu_item.caption = "表示テスト"; // キャプション名
menu_item.enabled = true; // 有効か
menu_item.separatorBefore = false; // 1つ上にセパレータを付ける
menu_item.visible = true; // 可視表示するか
// メニューが選択された時に実行されるイベント
menu_item.onSelect = function (obj, menu_item){
trace("インスタンスの参照:" + obj);
};
コンテキストメニューにアイテムを追加する
1.コンテキストメニューオブジェクトを作成する
new 演算子を使って、ContextMenu クラスをインスタンス化します。
コンテキストメニューを作成
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
2.コンテキストメニューにアイテムを追加する
表示したいメニューアイテムを配列に格納して、customItems プロパティにセットします。
複数の項目を表示したい場合は、メニューアイテムを複数作成する必要があります。
配列に登録した順番通りに、上から下へアイテムが表示されます。
最大 15 個のメニューアイテムを登録できます。
キャプションの文字数は 100 文字以内である必要があります。
同名のキャプションは登録できません。
コンテキストメニューオブジェクトにメニューアイテムを登録する
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
// メニューアイテムを作成
var menu_item1 = new ContextMenuItem("表示テスト1" , function (){});
var menu_item2 = new ContextMenuItem("表示テスト2" , function (){});
// メニューアイテムを登録
context_menu.customItems = [menu_item1 , menu_item2];
下の画像のような、コンテキストメニューを作成したい場合の例です。
3つのメニューアイテムをカスタムアイテムに登録する
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
// すべてのビルトインメニューを非表示に設定する
context_menu.hideBuiltInItems();
// ------------------------------------------------------------
// メニューアイテム1
// ------------------------------------------------------------
// メニューアイテムを作成
var menu_item1 = new ContextMenuItem();
// メニューアイテムのプロパティを設定
menu_item1.caption = "アイテム1"; // キャプション名
menu_item1.enabled = true; // 有効か
menu_item1.separatorBefore = false; // 1つ上にセパレータを付けるか
menu_item1.visible = true; // 可視表示するか
// メニューが選択された時に実行されるイベント
menu_item1.onSelect = function (obj, menu_item){
trace("アイテム1が選択された");
};
// カスタムメニューに追加登録
context_menu.customItems.push(menu_item1);
// ------------------------------------------------------------
// メニューアイテム2
// ------------------------------------------------------------
// メニューアイテムを作成
var menu_item2 = new ContextMenuItem();
// メニューアイテムのプロパティを設定
menu_item2.caption = "アイテム2"; // キャプション名
menu_item2.enabled = false; // 有効か
menu_item2.separatorBefore = false; // 1つ上にセパレータを付けるか
menu_item2.visible = true; // 可視表示するか
// メニューが選択された時に実行されるイベント
menu_item2.onSelect = function (obj, menu_item){
trace("アイテム2が選択された");
};
// カスタムメニューに追加登録
context_menu.customItems.push(menu_item2);
// ------------------------------------------------------------
// メニューアイテム3
// ------------------------------------------------------------
// メニューアイテムを作成
var menu_item3 = new ContextMenuItem();
// メニューアイテムのプロパティを設定
menu_item3.caption = "アイテム3"; // キャプション名
menu_item3.enabled = true; // 有効か
menu_item3.separatorBefore = true; // 1つ上にセパレータを付けるか
menu_item3.visible = true; // 可視表示するか
// メニューが選択された時に実行されるイベント
menu_item3.onSelect = function (obj, menu_item){
trace("アイテム3が選択された");
};
// カスタムメニューに追加登録
context_menu.customItems.push(menu_item3);
// _root にコンテキストメニューを登録
_root.menu = context_menu;
3.表示オブジェクトにコンテキストメニューを登録する
表示オブジェクトにコンテキストメニューを登録する方法は、こちらで解説しています。
_root に登録する例です。
_root に、コンテキストメニューオブジェクトを渡す
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
// コンテキストメニューアイテムオブジェクトを作成
var menu_item = new ContextMenuItem();
// メニューアイテムのプロパティを設定
menu_item.caption = "表示テスト"; // キャプション名
menu_item.enabled = true; // 有効か
menu_item.separatorBefore = true; // 1つ上にセパレータを付けるか
menu_item.visible = true; // 可視表示するか
// メニューが選択された時に実行されるイベント
menu_item.onSelect = function (obj, menu_item){
trace("アイテムが選択された");
};
// カスタムメニューに登録
context_menu.customItems = [menu_item];
// _root にコンテキストメニューを登録
_root.menu = context_menu;
インスタンスにコンテキストメニューを登録する
インスタンスにコンテキストメニューを登録する
1.コンテキストメニューオブジェクトを作成する
new 演算子を使って、ContextMenu クラスをインスタンス化します。
コンテキストメニューを作成
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
2.インスタンスにコンテキストメニューを登録する
この、menu プロパティに、ContextMenu オブジェクトを渡します。
すると、インスタンスの上で右クリックしたときに、設定したコンテキストメニューが表示されるようになります。
ムービークリップにコンテキストメニューオブジェクトを渡す
// ------------------------------------------------------------
// ムービークリップ
// ------------------------------------------------------------
// ムービークリップオブジェクトを作成し、_root に配置する(深度 0)
var mc = _root.createEmptyMovieClip ( "movie_clip" , 0 );
// 矩形をレンダリング
mc.lineStyle (5, 0xAA0000, 100);
mc.beginFill (0xFF4444, 100);
mc.moveTo ( 0 , 0 );
mc.lineTo ( 0 , 200 );
mc.lineTo ( 200 , 200 );
mc.lineTo ( 200 , 0 );
mc.endFill();
// ------------------------------------------------------------
// コンテキストメニュー
// ------------------------------------------------------------
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
// すべてのビルトインメニューを非表示に設定する
context_menu.hideBuiltInItems();
// ムービークリップにコンテキストメニューを登録
mc.menu = context_menu;
テキストフィールドにコンテキストメニューオブジェクトを渡す
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドオブジェクトを作成し、_root に配置する(深度 0)
_root.createTextField("text_field",0,10,10,Stage.width-20,Stage.height-20);
// テキストフィールドの参照を取得
var tf = _root.text_field;
// 背景の色を指定
tf.background = true;
tf.backgroundColor = 0xFF4444;
// 枠線を表示
tf.border = true;
// 選択可能か?
tf.selectable = false;
// ------------------------------------------------------------
// コンテキストメニュー
// ------------------------------------------------------------
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
// すべてのビルトインメニューを非表示に設定する
context_menu.hideBuiltInItems();
// テキストフィールドにコンテキストメニューを登録
tf.menu = context_menu;
ステージ全体に適用する
Flash 画面全体に適用したい場合は、_root.menu に登録します。
_root にコンテキストメニューオブジェクトを渡す
// コンテキストメニューオブジェクトを作成
var context_menu = new ContextMenu();
// すべてのビルトインメニューを非表示に設定する
context_menu.hideBuiltInItems();
// _root にコンテキストメニューを登録
_root.menu = context_menu;