Flashゲーム講座 & アクションスクリプトサンプル集

 

コンテキストメニューとは?

 

■ コンテキストメニューとは?


マウスを右クリックしたときに、ポップアップで表示されるメニューをコンテキストメニューといいます。
 
 

■ コンテキストメニュークラスを使うと?


コンテキストメニュークラスを使用すると、「設定」以外の項目を非表示にする事ができます。
 
 
好きな項目を、最大 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 再生
print プリント
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引数(略可)Stringcaption プロパティに相当
第02引数(略可)FunctiononSelect イベントに相当
戻り値 ColorTransformContextMenuItem オブジェクト
 
コンテキストメニューアイテムを作成

// コンテキストメニューアイテムオブジェクトを作成
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.インスタンスにコンテキストメニューを登録する

MovieClip や、TextField などのクラスには、menu プロパティが存在します。
 
この、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;