[PR]テレビ番組表
今夜の番組チェック




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



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


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

コンテキストメニュークラスを使用すると、「設定」以外の項目を非表示にする事ができます。 さらに、カスタムアイテムを使う事で、好きな項目を 最大 15 個まで登録する事が可能です。











コンテキストメニューを非表示にしたい







■コンテキストメニューを非表示にする


右クリックしたときにでるコンテキストメニュー自体は非表示にする事はできません。しかし項目の一部を非表示にする事は可能です。

バージョンが上がるごとにより詳しい記述方法が追加されています。










■メニューを非表示にする(Flash 3 以降の場合)





■ブラウザで再生時にメニューを非表示にする


<EMBED> タグの menu を false にすると、「設定」以外のコンテキストメニューが非表示になります。








メニューを非表示にする

	<EMBED 
	src="menu_00.swf" 
	menu="false" 
	loop=false 
	quality=high 
	bgcolor=#FFFFFF  
	WIDTH=280 
	HEIGHT=210 
	TYPE="application/x-shockwave-flash" 
	PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"
	></EMBED>





■スタンドアローンプレイヤー再生時にメニューを非表示にする


fscommand 命令を使って下の例のように、Flash Player にパラメータを渡すと、「設定」以外のコンテキストメニューが非表示になります。また、メニューバーも非表示になります。




メニューを非表示にする

fscommand ("showmenu", "false");


ブラウザ用 Flash Player では動作しません。





■ メニューを非表示にする(Flash 6 以降の場合)





■メニューを非表示にする


Stage.showMenu プロパティを false に変更すると「設定」以外のコンテキストメニューが非表示になります。


メニューを非表示にする

Stage.showMenu = false;





■ メニュー項目を個別に非表示にする(Flash 7 以降の場合)





1.コンテキストメニューインスタンスを作成する


ContextMenu クラスを使用すると、メニューを個別に表示と非表示の切り替えが可能となります。


コンテキストメニューを作成

var menu_cm = new ContextMenu ();	







2.プロパティを設定する


ContextMenu クラスは以下の表にあるプロパティを保有しています。このプロパティを true にすると表示、 false にすると非表示になります。


プロパティ 説明
builtInItems.forward_back 先送り、戻る
builtInItems.loop ループ再生
builtInItems.forward_back 再生
builtInItems.print プリント
builtInItems.quality 画質
builtInItems.rewind 巻き戻し
builtInItems.zoom 拡大


コンテキストメニューにプロパティを設定する

var menu_cm = new ContextMenu ();

menu_cm.builtInItems.forward_back = false;	// 先送り、戻る
menu_cm.builtInItems.loop = false;		// ループ再生
menu_cm.builtInItems.play = false;		// 再生
menu_cm.builtInItems.print = false;		// プリント
menu_cm.builtInItems.quality = false;	// 画質
menu_cm.builtInItems.rewind = false;		// 巻き戻し
menu_cm.builtInItems.zoom = false;		// 拡大


また、hideBuiltInItems() メソッドを呼び出すと、上の表にあるプロパティがすべて false となります。


コンテキストメニューにプロパティを設定する

var menu_cm = new ContextMenu ();

menu_cm.hideBuiltInItems();





3.menu に登録する


最後に、ムービークリップのプロパティである menu にコンテキストメニューインスタンスを登録すると、そのムービークリップ上で右クリックを押したときに、設定どおりのコンテキストメニューが表示されます。

_root.menu に登録した場合は、Flash全体のどこで右クリックを押しても設定したコンテキストメニューが表示されるようになります。


_root 上で右クリックを押されたときに動作させる

var menu_cm = new ContextMenu ();

menu_cm.builtInItems.forward_back = false;		// 先送り、戻る
menu_cm.builtInItems.loop = false;		// ループ再生
menu_cm.builtInItems.play = false;		// 再生
menu_cm.builtInItems.print = false;		// プリント
menu_cm.builtInItems.quality = false;		// 画質
menu_cm.builtInItems.rewind = false;		// 巻き戻し
menu_cm.builtInItems.zoom = false;		// 拡大

_root.menu = menu_cm;






メニューが呼び出されるか調べたい(Flash 7 以降)



サンプルをダウンロード




1.コンテキストメニューインスタンスを作成する


ContextMenu クラスをインスタンス化します。


コンテキストメニューを作成

var menu_cm = new ContextMenu ();	





2.コールバック関数を登録する


ContextMenu クラスの onSelect イベントを使用すると、右クリックを押してコンテキストメニューが呼び出される直前に、登録したコールバック関数を呼び出す事が可能です。


コンテキストメニューにプロパティを設定する

var menu_cm = new ContextMenu ();
menu_cm.onSelect = function(){
	trace("右クリックが押された");
}





3.menu に登録する


最後に、ムービークリップのプロパティである menu にコンテキストメニューインスタンスを登録すると、そのムービークリップ上で右クリックを押したときに、イベントが呼び出されるようになります。

_root.menu に登録した場合は、Flash全体のどこで右クリックを押してもイベントが呼び出されるようになります。


_root 上で右クリックを押されたときに動作させる

var menu_cm = new ContextMenu ();
menu_cm.onSelect = function(){
	trace("右クリックが押された");
}

_root.menu = menu_cm;






メニューに項目を追加したい(Flash 7 以降)



サンプルをダウンロード




1.コンテキストメニューアイテムインスタンスを作成する


メニューに項目を追加したい場合は、ContextMenuItem クラスを使用します。


コンテキストメニューを作成

var menu_item = new ContextMenuItem ();	





2.メニューアイテムのプロパティを設定する


ContextMenuItem クラスは、以下の表にあるプロパティを保有しています。各プロパティに必要なパラメータを設定します。


プロパティ 説明
caption 表示する文字を指定(キャプション名)
enabled 通常表示の場合 true 、淡色表示の場合 false
separatorBefore このメニューの1つ上にセパレータ(区切り線)を付ける
visible 表示する場合 true , 非表示にする場合 false
onSelect メニューが選択されたときに呼び出されるコールバック関数を登録


コンテキストメニューアイテムにプロパティを設定する

var menu_item = new ContextMenuItem();	// メニューアイテムを作成

menu_item.caption = "表示テスト";	// キャプション名
menu_item.enabled = false;		// 有効か
menu_item.separatorBefore = false;	// 1つ上にセパレータを付ける
menu_item.visible = true;		// 可視表示するか
menu_item.onSelect = function(){	// 押されたときに呼び出される関数
	trace("選択された");
}


複数の項目を追加したい場合は、その数だけコンテキストメニューアイテムを作成する必要があります。





3.コンテキストメニューを作成する


次に、ContextMenu クラスを使用して、コンテキストメニューインスタンスを作成します。


コンテキストメニューを作成する

var menu_cm = new ContextMenu ();





4.項目を登録する


ContextMenu クラスが持っている customItems プロパティに、コンテキストメニューアイテムを配列に格納して登録します。

カスタムアイテムは最大 15 個のメニューアイテムを登録できます。キャプションの文字数は 100 文字以内である必要があります。同名のキャプションは登録できません。


カスタムアイテムにメニューアイテムを登録する

var menu_item = new ContextMenuItem();	// メニューアイテムを作成

menu_item.caption = "表示テスト";	// キャプション名
menu_item.enabled = false;		// 有効か
menu_item.separatorBefore = false;	// 1つ上にセパレータを付けるか
menu_item.visible = true;		// 可視表示するか
menu_item.onSelect = function(){	// 押されたときに呼び出される関数
	trace("選択された");
}

var menu_cm = new ContextMenu ();
menu_cm.customItems = [menu_item];	// カスタムメニューに登録




下の画像のようなコンテキストメニューを作成したい場合の例です。




3つのメニューアイテムをカスタムアイテムに登録する

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(){	// 押されたときに呼び出される関数
	trace("アイテム1が選択された");
}

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(){	// 押されたときに呼び出される関数
	trace("アイテム2が選択された");
}

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(){	// 押されたときに呼び出される関数
	trace("アイテム3が選択された");
}


var menu_cm = new ContextMenu ();
menu_cm.hideBuiltInItems();

// カスタムメニューに登録
menu_cm.customItems = [
   menu_item1,
   menu_item2,
   menu_item3
];

_root.menu = menu_cm;





5.menu に登録する


最後に、ムービークリップのプロパティである menu にコンテキストメニューインスタンスを登録すると、そのムービークリップ上で右クリックを押したときに、設定どおりのコンテキストメニューが表示されます。

_root.menu に登録した場合は、Flash全体のどこで右クリックを押しても設定したコンテキストメニューが表示されるようになります。


_root 上で右クリックを押されたときに動作させる


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(){	// 押されたときに呼び出される関数
	trace("選択された");
}


var menu_cm = new ContextMenu ();

menu_cm.customItems = [menu_item];	// カスタムメニューに登録

_root.menu = menu_cm;