Adobe AIR プログラミング講座

 

NativeMenu クラスについて

 


■NativeMenu クラスについて


NativeMenu クラスは、メニューに関する機能がまとまっています。
 
ウィンドウのメニューや、コンテキストメニューの作成が可能です。
 
Windows 7 のウィンドウメニュー
 
コンテキストメニュー
 
コンテキストメニューといえば、ContextMenu クラスがありますが、NativeMenu クラスの方が高機能となります。
 
チェックマークの表示、メニューのネスト(入れ子)などが可能です。
 

■NativeMenu の機能をサポートしているか調べる


NativeMenu の機能をサポートしているか調べるには、NativeMenu.isSupported プロパティを使用します。
 
true であれば利用可能です。
 
この確認用のプロパティは、Adobe AIR 2.0 以降で利用可能です。
 
モバイルなどの環境で動作させる場合、NativeMenu の機能をサポートしていない事があります。
 
NativeMenu をサポートしているか調べる

import flash.display.NativeMenu;
import flash.text.TextField;

// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 20;
text_field.border = true;
stage.addChild(text_field);

text_field.text = "NativeMenu のサポート:" + NativeMenu.isSupported;
 

■NativeMenu オブジェクトを作成する


new 演算子を使って、NativeMenu クラスをインスタンス化します。
 
ネイティブメニューオブジェクトを作成

import flash.display.NativeMenu;

// ネイティブメニューオブジェクトを作成
var native_menu:NativeMenu = new NativeMenu();
 
NativeMenu クラスは、メニューアイテムを格納するための入れ物として機能します。
 
メニューをネスト(入れ子)にしたい場合は、さらに、NativeMenu オブジェクトを作成する必要があります。
 


 

ネイティブメニューアイテムを作成する

 
 


■新規にメニューアイテムを作成する


new 演算子を使って、NativeMenuItem クラスをインスタンス化します。
 
ネイティブメニューアイテムオブジェクトは、項目の数だけ、複数作成する必要があります。
 
new NativeMenuItem ( "ラベル" , セパレータであるか? ) :NativeMenuItem
第01引数(略可)Stringラベルとなる文字列を指定します。
第02引数(略可)Booleanセパレータを作成する場合は true を指定します。
戻り値 NativeMenuItemNativeMenuItem オブジェクト
 
NativeMenuItem オブジェクトを作成

import flash.display.NativeMenuItem;

// NativeMenuItem オブジェクトを作成
var menu_item:NativeMenuItem = new NativeMenuItem();
 
■セパレータについて
 
セパレータは、ContextMenuItem クラスと仕様が異なります。
 
NativeMenuItem クラスでは、セパレータ1つにつき、メニューアイテムを1つ作成する必要があります。
 
また、生成後に、セパレータの設定を変更することはできません。
 
セパレータ用の、NativeMenuItem オブジェクトを作成

import flash.display.NativeMenuItem;

// セパレータ用の NativeMenuItem オブジェクトを作成
var menu_item:NativeMenuItem = new NativeMenuItem(null , true);
 

■ネスト(入れ子)用のメニューアイテムを作成し、最後尾に登録する


ネスト(入れ子)用のメニューアイテムを作成し、最後尾に登録するには、addSubmenu() メソッドを使用します。
 
親となる、NativeMenu オブジェクトから呼び出します。
 
第01引数に、サブメニューとしたい NativeMenu オブジェクトを指定します。
 
第02引数に、ラベルを文字列で指定します。
 
戻り値から、新しい NativeMenuItem オブジェクトが得られます。
 
 
 
NativeMenuItem オブジェクトを作成

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;

// ------------------------------------------------------------
// サブ用メニューを作成
// ------------------------------------------------------------
// NativeMenu オブジェクトを作成
var menu_child:NativeMenu = new NativeMenu();

// 「サブアイテム0」を作成し、最後尾に登録
var menu_child_item_0:NativeMenuItem = new NativeMenuItem("サブアイテム0");
menu_child.addItem(menu_child_item_0);

// 「サブアイテム1」を作成し、最後尾に登録
var menu_child_item_1:NativeMenuItem = new NativeMenuItem("サブアイテム1");
menu_child.addItem(menu_child_item_1);


// ------------------------------------------------------------
// ルート用メニューを作成
// ------------------------------------------------------------
// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「ルートアイテム0」を作成し、最後尾に登録
var menu_item_0:NativeMenuItem = new NativeMenuItem("ルートアイテム0");
menu.addItem(menu_item_0);

// 「ルートアイテム1」を作成し、最後尾に登録
var menu_item_1:NativeMenuItem = new NativeMenuItem("ルートアイテム1");
menu.addItem(menu_item_1);

// ネスト(入れ子)用のメニューアイテムを作成し、最後尾に登録する
menu.addSubmenu(menu_child,"ルートアイテム2");


// ポップアップメニューを表示する
//menu.display(stage,0,0);
 

■ネスト(入れ子)用のメニューアイテムを作成し、順序を指定して登録する


ネスト(入れ子)用のメニューアイテムを作成し、順序を指定して登録するには、addSubmenuAt() メソッドを使用します。
 
親となる、NativeMenu オブジェクトから呼び出します。
 
第01引数に、サブメニューとしたい NativeMenu オブジェクトを指定します。
 
第02引数に、登録したい位置を、 0 から始まる数値で指定します。
 
第03引数に、ラベルを文字列で指定します。
 
戻り値から、新しい NativeMenuItem オブジェクトが得られます。
 
順番は変動することがあります。固定された位置ではありません。
 
メニューアイテムを登録したり、外したりすると、0 から昇順に振り直されます。
 
 
 
NativeMenuItem オブジェクトを作成

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;

// ------------------------------------------------------------
// サブ用メニューを作成
// ------------------------------------------------------------
// NativeMenu オブジェクトを作成
var menu_child:NativeMenu = new NativeMenu();

// 「サブアイテム0」を作成し、最後尾に登録
var menu_child_item_0:NativeMenuItem = new NativeMenuItem("サブアイテム0");
menu_child.addItem(menu_child_item_0);

// 「サブアイテム1」を作成し、最後尾に登録
var menu_child_item_1:NativeMenuItem = new NativeMenuItem("サブアイテム1");
menu_child.addItem(menu_child_item_1);


// ------------------------------------------------------------
// ルート用メニューを作成
// ------------------------------------------------------------
// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「ルートアイテム0」を作成し、最後尾に登録
var menu_item_0:NativeMenuItem = new NativeMenuItem("ルートアイテム0");
menu.addItem(menu_item_0);

// 「ルートアイテム2」を作成し、最後尾に登録
var menu_item_2:NativeMenuItem = new NativeMenuItem("ルートアイテム2");
menu.addItem(menu_item_2);

// ネスト(入れ子)用のメニューアイテムを作成し、1 番目に登録する
menu.addSubmenuAt(menu_child,1,"ルートアイテム1");


// ポップアップメニューを表示する
//menu.display(stage,0,0);
 


 

ネイティブメニューアイテムを設定する

 


■NativeMenuItem クラスのプロパティについて


NativeMenuItem オブジェクトには、以下のプロパティがあります。
 
プロパティ名説明
enabledBooleanメニューアイテムが有効であるか
checkedBooleanチェックマークを表示するか
labelStringメニューアイテムのラベル
nameStringメニューアイテムの名前
dataObject好きなオブジェクトを、自由に格納する事ができるプロパティ
submenuNativeMenuサブメニューを登録したい場合、NativeMenu オブジェクトをセット
mnemonicIndexint何番目の文字をニーモニック文字として利用するかを指定
keyEquivalentStringショートカットキーを文字列で指定
keyEquivalentModifiersArrayショートカットキーのモディファイアキーコードを配列で指定
 
■名前について(name プロパティ)
 
メニューアイテムを、個別に識別するためのユニーク(唯一)な名前を付けます。
 
label プロパティでも実現できますが、多国語表示に対応するとラベル名が変わってしまうので、name プロパティで管理します。
 
■データについて(data プロパティ)
 
好きなオブジェクトを、自由に格納する事ができるプロパティです。
 
Adobe AIR のシステムから、書き込み更新される事はありません。
 
メニューが選択されたときなど、イベントから取得することができます。
 
■ニーモニック文字について(mnemonicIndex プロパティ)
 
ラベルの1文字を、ショートカットとして利用できます。
 
ラベルの文字列の先頭を 0 番目として、何番目の文字をニーモニック文字として利用するかを指定します。
 
Windows の場合、Alt キーを押すと、メニューに下線が付き、押すべきキーが分かります。
 
■ショートカットキーについて(keyEquivalent プロパティ)
 
ショートカットキーとして割り当てたいキーを、1文字で指定します。
 
通常は、小文字を指定します。
 
大文字を指定した場合、Shift キーを押しながら押下すると、動作するようになります。
 
ショートカットは、ウィンドウのメニュー上では動作しますが、コンテキストメニュー上では動作しません。
 
■ショートカットキーのモディファイアについて(keyEquivalentModifiers プロパティ)
 
keyEquivalent プロパティに、同時押しとしたい追加のキーコードを配列で指定します。
 
モディファイアとして、設定可能なキーコードは、以下の通りです。
 
キー プロパティ
Alt Keyboard.ALTERNATE
Command (Macintosh) Keyboard.COMMAND
Control Keyboard.CONTROL
 
設定例です。
 
NativeMenuItem オブジェクトのプロパティを設定する

import flash.display.NativeMenuItem;

// NativeMenuItem オブジェクトを作成
var menu_item:NativeMenuItem = new NativeMenuItem();

// ユーザーパラメータ
var user_param = new Object();

menu_item.enabled = true;	// メニューアイテムが有効であるか
menu_item.checked = false;	// チェックマークを表示するか
menu_item.label = "表示テスト";	// メニューアイテムのラベル
menu_item.name = "item1";	// メニューアイテムの名前
menu_item.data = user_param;	// 自由にデータをセットできるプロパティ
 

■メニューが選択されたかを、個別に調べる


メニューが選択されたかを、個別に調べるには、
 
NativeMenuItem クラスの、Event.SELECT イベントを使用します。
 
メニューアイテムごとに、コールバック関数を登録したい場合に便利です。
 
メニューが押されたか調べる

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.events.Event;

// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");

// 「アイテム0」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_0);
// 「アイテム1」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_1);

// メニューアイテムが選択されたときに呼び出されるイベント
menu_item_0.addEventListener(Event.SELECT , function (e:Event):void{
	trace("アイテム0が選択された");
});
// メニューアイテムが選択されたときに呼び出されるイベント
menu_item_1.addEventListener(Event.SELECT , function (e:Event):void{
	trace("アイテム1が選択された");
});

// ポップアップメニューを表示する
//menu.display(stage,0,0);
 

■メニューが選択されたかを、一箇所でまとめて調べる


メニューが選択されたかを、一箇所でまとめて調べるには、
 
NativeMenu クラスの、Event.SELECT イベントを使用します。
 
子孫すべてのメニューアイテムが対象です。
 
引数から得られる Event オブジェクトの target プロパティから、選択された NativeMenuItem オブジェクトが取得できます。
 
メニューが押されたか調べる

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.events.Event;

// ------------------------------------------------------------
// サブ用メニューを作成
// ------------------------------------------------------------
// NativeMenu オブジェクトを作成
var menu_child:NativeMenu = new NativeMenu();

// 「サブアイテム0」を作成し、最後尾に登録
var menu_child_item_0:NativeMenuItem = new NativeMenuItem("サブアイテム0");
menu_child.addItem(menu_child_item_0);

// 「サブアイテム1」を作成し、最後尾に登録
var menu_child_item_1:NativeMenuItem = new NativeMenuItem("サブアイテム1");
menu_child.addItem(menu_child_item_1);


// ------------------------------------------------------------
// ルート用メニューを作成
// ------------------------------------------------------------
// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「ルートアイテム0」を作成し、最後尾に登録
var menu_item_0:NativeMenuItem = new NativeMenuItem("ルートアイテム0");
menu.addItem(menu_item_0);

// 「ルートアイテム1」を作成し、最後尾に登録
var menu_item_1:NativeMenuItem = new NativeMenuItem("ルートアイテム1");
menu.addItem(menu_item_1);

// ネスト(入れ子)用のメニューアイテムを作成し、最後尾に登録する
menu.addSubmenu(menu_child,"ルートアイテム2");

// メニューが選択されたときに呼び出されるイベント
menu.addEventListener(Event.SELECT , function (e:Event):void{

	// 選択されたメニューアイテム
	var menu_item:NativeMenuItem = e.target as NativeMenuItem;

	trace(menu_item.label);

});


// ポップアップメニューを表示する
//menu.display(stage,0,0);
 


 

ネイティブメニューアイテムを登録する

 
 


■メニューアイテムを登録する


メニューアイテム登録用のメソッドの一覧です。
 
メソッド名 説明
addItem() メニューアイテムを、最後尾に登録する
addItemAt() メニューアイテムを、順序を指定して登録する
 

■メニューアイテムを、最後尾に登録する


メニューアイテムを、最後尾に登録するには、addItem() メソッドを使用します。
 
引数に、NativeMenuItem オブジェクトを渡します。
 
メニューアイテムを、最後尾に登録する

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;

// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");
// 「アイテム2」を作成
var menu_item_2:NativeMenuItem = new NativeMenuItem("アイテム2");

// 「アイテム0」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_0);
// 「アイテム1」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_1);
// 「アイテム2」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_2);

// ポップアップメニューを表示する
//menu.display(stage,0,0);
 

■メニューアイテムを、順序を指定して登録する


メニューアイテムを、順序を指定して登録するには、addItemAt() メソッドを使用します。
 
第01引数に、NativeMenuItem オブジェクトを指定します。
 
第02引数に、登録したい位置を、 0 から始まる数値で指定します。
 
順番は変動することがあります。固定された位置ではありません。
 
メニューアイテムを登録したり、外したりすると、0 から昇順に振り直されます。
 
メニューアイテムを、順序を指定して登録する

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;

// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");
// 「アイテム2」を作成
var menu_item_2:NativeMenuItem = new NativeMenuItem("アイテム2");

// 「アイテム0」をネイティブメニューの 0 番目に登録
menu.addItemAt(menu_item_0,0);
// 「アイテム1」をネイティブメニューの 1 番目に登録
menu.addItemAt(menu_item_1,1);
// 「アイテム2」をネイティブメニューの 2 番目に登録
menu.addItemAt(menu_item_2,2);

// ポップアップメニューを表示する
//menu.display(stage,0,0);
 
 


■メニューアイテムを移動する


メニューアイテム移動用のメソッドの一覧です。
 
メソッド名 説明
setItemIndex() 順序を指定して、メニューアイテムを移動する
 

■順序を指定して、メニューアイテムを移動する


順序を指定して、メニューアイテムを移動するには、setItemIndex() メソッドを使用します。
 
第01引数に、NativeMenuItem オブジェクトを指定します。
 
第02引数に、移動先の位置を、 0 から始まる数値で指定します。
 
順序を指定して、メニューアイテムを移動する

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;

// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");
// 「アイテム2」を作成
var menu_item_2:NativeMenuItem = new NativeMenuItem("アイテム2");

// 「アイテム0」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_0);
// 「アイテム1」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_1);
// 「アイテム2」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_2);

// 「アイテム2」を 1 番目に移動する
menu.setItemIndex(menu_item_2 , 1);

// ポップアップメニューを表示する
//menu.display(stage,0,0);
 
 


■メニューアイテムを取得する


取得用のメソッドの一覧です。
 
メソッド名 説明
getItemAt() 順序を指定して、メニューアイテムを取得する
getItemByName() 名前を指定して、メニューアイテムを取得する
getItemIndex() メニューアイテムの登録位置を取得する
 

■順序を指定して、メニューアイテムを取得する


順序を指定して、メニューアイテムを取得するには、getItemAt() メソッドを使用します。
 
引数に、取得したい位置を、 0 から始まる数値で指定します。
 
戻り値から、該当する NativeMenuItem オブジェクトが得られます。
 
順序を指定して、メニューアイテムを取得する

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;

// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");
// 「アイテム2」を作成
var menu_item_2:NativeMenuItem = new NativeMenuItem("アイテム2");

// 「アイテム0」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_0);
// 「アイテム1」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_1);
// 「アイテム2」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_2);

// 0 番目に登録されている、メニューアイテムを取得
var menu_item:NativeMenuItem = menu.getItemAt(0);
trace(menu_item.label);
 

■名前を指定して、メニューアイテムを取得する


名前を指定して、メニューアイテムを取得するには、getItemByName() メソッドを使用します。
 
引数に、名前を文字列で指定します。
 
戻り値から、該当する NativeMenuItem オブジェクトが得られます。
 
存在しない場合 null が得られます。
 
名前を指定して、メニューアイテムを取得する

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;

// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");
// 「アイテム2」を作成
var menu_item_2:NativeMenuItem = new NativeMenuItem("アイテム2");

// 「アイテム0」に名前を設定
menu_item_0.name = "item0";
// 「アイテム1」に名前を設定
menu_item_1.name = "item1";
// 「アイテム2」に名前を設定
menu_item_2.name = "item2";

// 「アイテム0」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_0);
// 「アイテム1」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_1);
// 「アイテム2」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_2);

// "item2" という名前が付けられた、メニューアイテムを取得
var menu_item:NativeMenuItem = menu.getItemByName("item2");
trace(menu_item.label);
 

■メニューアイテムの登録位置を取得する


メニューアイテムの登録位置を取得するには、getItemIndex() メソッドを使用します。
 
引数に、NativeMenuItem オブジェクトを指定します。
 
戻り値から、位置が数値で得られます。
 
メニューアイテムの登録位置を取得する

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;

// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");
// 「アイテム2」を作成
var menu_item_2:NativeMenuItem = new NativeMenuItem("アイテム2");

// 「アイテム0」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_0);
// 「アイテム1」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_1);
// 「アイテム2」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_2);

// 「アイテム2」の登録位置を取得する
var index:int = menu.getItemIndex(menu_item_2);
trace(index);
 
 


■メニューアイテムの登録を解除する


除外用のメソッドの一覧です。
 
メソッド名 説明
removeItem() メニューアイテムの登録を解除する
removeItemAt() 順序を指定して、メニューアイテムの登録を解除する
removeAllItems() すべてのメニューアイテムの登録を解除する
 

■メニューアイテムの登録を解除する


メニューアイテムの登録を解除するには、removeItem() メソッドを使用します。
 
引数に、NativeMenuItem オブジェクトを指定します。
 
メニューアイテムの登録を解除する

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;

// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");
// 「アイテム2」を作成
var menu_item_2:NativeMenuItem = new NativeMenuItem("アイテム2");

// 「アイテム0」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_0);
// 「アイテム1」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_1);
// 「アイテム2」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_2);

// 「アイテム1」の登録を解除する
menu.removeItem(menu_item_1);

// ポップアップメニューを表示する
//menu.display(stage,0,0);
 

■順序を指定して、メニューアイテムの登録を解除する


順序を指定して、メニューアイテムの登録を解除するには、addItemAt() メソッドを使用します。
 
引数に、登録を外したい位置を、 0 から始まる数値で指定します。
 
順序を指定して、メニューアイテムの登録を解除する

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;

// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");
// 「アイテム2」を作成
var menu_item_2:NativeMenuItem = new NativeMenuItem("アイテム2");

// 「アイテム0」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_0);
// 「アイテム1」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_1);
// 「アイテム2」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_2);

// 0 番目のメニューアイテムの登録を解除する
menu.removeItemAt(0);

// ポップアップメニューを表示する
//menu.display(stage,0,0);
 

■すべてのメニューアイテムの登録を解除する


すべてのメニューアイテムの登録を解除するには、removeAllItems() メソッドを使用します。
 
すべてのメニューアイテムの登録を解除する

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;

// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");
// 「アイテム2」を作成
var menu_item_2:NativeMenuItem = new NativeMenuItem("アイテム2");

// 「アイテム0」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_0);
// 「アイテム1」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_1);
// 「アイテム2」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_2);

// すべてのメニューアイテムの登録を解除する
menu.removeAllItems();

// ポップアップメニューを表示する
//menu.display(stage,0,0);
 


 

ネイティブメニューを表示する

 
 


■ポップアップメニューとして表示する


ポップアップメニューとして表示するには、display() メソッドを使用します。
 
第01引数に、表示したい場所となる、ステージオブジェクトを指定します。
 
第02引数に、表示したいステージ座標系の y 座標を指定します。
 
第03引数に、表示したいステージ座標系の y 座標を指定します。
 
 
コンテキストメニューと似ていますが、こちらは好きなタイミングで表示することができます。
 
ポップアップメニューは、同期実行です。ポップアップメニューが消えるまで、制御が返りません
 
マウスボタンを押した時に、ポップアップメニューを表示する

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.Sprite;
import flash.display.Graphics;
import flash.events.MouseEvent;


// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");

// 「アイテム0」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_0);
// 「アイテム1」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_1);

// マウスボタンが押されたときに呼び出されるイベント
stage.addEventListener(MouseEvent.MOUSE_DOWN , function (e:MouseEvent):void{

	// ポップアップメニューを表示する
	menu.display(stage,stage.mouseX,stage.mouseY);

});

 

■グローバルアプリケーションメニューとして表示する


グローバルアプリケーションメニューとして表示することができます。
 
詳しい登録方法は、こちらで解説しています。
 
グローバルアプリケーションメニューを表示する

import flash.desktop.NativeApplication;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.events.Event;

// グローバルアプリケーションメニューをサポートしている
if(NativeApplication.supportsMenu){

	// ------------------------------------------------------------
	// サブ用メニューを作成
	// ------------------------------------------------------------
	// NativeMenu オブジェクトを作成
	var menu_child:NativeMenu = new NativeMenu();

	// 「サブアイテム0」を作成し、最後尾に登録
	var menu_child_item_0:NativeMenuItem = new NativeMenuItem("サブアイテム0");
	menu_child.addItem(menu_child_item_0);

	// 「サブアイテム1」を作成し、最後尾に登録
	var menu_child_item_1:NativeMenuItem = new NativeMenuItem("サブアイテム1");
	menu_child.addItem(menu_child_item_1);


	// ------------------------------------------------------------
	// ルート用メニューを作成
	// ------------------------------------------------------------
	// NativeMenu オブジェクトを作成
	var menu:NativeMenu = new NativeMenu();

	// メニューが選択されたときに呼び出されるイベント
	menu.addEventListener(Event.SELECT , function (e:Event):void{
		// 選択されたメニューアイテム
		var menu_item:NativeMenuItem = e.target as NativeMenuItem;
		trace(menu_item.label);
	});

	// 「ルートアイテム0」を作成し、最後尾に登録
	var menu_item_0:NativeMenuItem = new NativeMenuItem("ルートアイテム0");
	menu.addItem(menu_item_0);

	// 「ルートアイテム1」を作成し、最後尾に登録
	var menu_item_1:NativeMenuItem = new NativeMenuItem("ルートアイテム1");
	menu.addItem(menu_item_1);

	// 「ルートアイテム2」を作成し、最後尾に登録
	var menu_item_2:NativeMenuItem = new NativeMenuItem("ルートアイテム2");
	menu.addItem(menu_item_2);

	// サブメニューとして登録
	menu_item_2.submenu = menu_child;


	// ------------------------------------------------------------
	// グローバルアプリケーションメニューを表示
	// ------------------------------------------------------------
	var app:NativeApplication = NativeApplication.nativeApplication;

	// ネイティブアプリケーションに、ネイティブメニューを登録する
	app.menu = menu;

}
 

■ウィンドウメニューとして表示する


ウィンドウメニューとして表示することができます。
 
詳しい登録方法は、こちらで解説しています。
 
 
「アプリ起動時に作成されるウィンドウ」に、ウィンドウメニューを表示する

import flash.display.NativeWindow;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.events.Event;

// ウィンドウメニューをサポートしている
if(NativeWindow.supportsMenu){

	// ------------------------------------------------------------
	// サブ用メニューを作成
	// ------------------------------------------------------------
	// NativeMenu オブジェクトを作成
	var menu_child:NativeMenu = new NativeMenu();

	// 「サブアイテム0」を作成し、最後尾に登録
	var menu_child_item_0:NativeMenuItem = new NativeMenuItem("サブアイテム0");
	menu_child.addItem(menu_child_item_0);

	// 「サブアイテム1」を作成し、最後尾に登録
	var menu_child_item_1:NativeMenuItem = new NativeMenuItem("サブアイテム1");
	menu_child.addItem(menu_child_item_1);


	// ------------------------------------------------------------
	// ルート用メニューを作成
	// ------------------------------------------------------------
	// NativeMenu オブジェクトを作成
	var menu:NativeMenu = new NativeMenu();

	// メニューが選択されたときに呼び出されるイベント
	menu.addEventListener(Event.SELECT , function (e:Event):void{
		// 選択されたメニューアイテム
		var menu_item:NativeMenuItem = e.target as NativeMenuItem;
		trace(menu_item.label);
	});

	// 「ルートアイテム0」を作成し、最後尾に登録
	var menu_item_0:NativeMenuItem = new NativeMenuItem("ルートアイテム0");
	menu.addItem(menu_item_0);

	// 「ルートアイテム1」を作成し、最後尾に登録
	var menu_item_1:NativeMenuItem = new NativeMenuItem("ルートアイテム1");
	menu.addItem(menu_item_1);

	// 「ルートアイテム2」を作成し、最後尾に登録
	var menu_item_2:NativeMenuItem = new NativeMenuItem("ルートアイテム2");
	menu.addItem(menu_item_2);

	// サブメニューとして登録
	menu_item_2.submenu = menu_child;


	// ------------------------------------------------------------
	// ウィンドウメニューを表示
	// ------------------------------------------------------------
	// 「アプリ起動時に作成されるウィンドウ」を取得
	var window:NativeWindow = stage.nativeWindow;

	// ネイティブウィンドウに、ネイティブメニューを登録する
	window.menu = menu;

}
 

■ステージ用コンテキストメニューとして表示する


ステージ上で動作する、コンテキストメニューとして表示することができます。
 
詳しい登録方法は、こちらで解説しています。
 
 
ステージにコンテキストメニューを表示する

import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.Sprite;
import flash.display.Graphics;

// NativeMenu オブジェクトを作成
var menu:NativeMenu = new NativeMenu();

// 「アイテム0」を作成
var menu_item_0:NativeMenuItem = new NativeMenuItem("アイテム0");
// 「アイテム1」を作成
var menu_item_1:NativeMenuItem = new NativeMenuItem("アイテム1");

// 「アイテム0」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_0);
// 「アイテム1」をネイティブメニューの最後尾に登録
menu.addItem(menu_item_1);

// スプライトを生成して配置
var sprite:Sprite = new Sprite();
stage.addChild(sprite);

// ステージ全体に矩形を描画
var g:Graphics = sprite.graphics;
g.beginFill ( 0xFF0000 , 0.5 );
g.drawRect(0,0,stage.stageWidth,stage.stageHeight);
g.endFill();

// スプライトにネイティブメニューを登録
sprite.contextMenu = menu;
 

■システムトレイアイコン用コンテキストメニューとして表示する


システムトレイアイコン上で動作する、コンテキストメニューとして表示することができます。
 
詳しい登録方法は、こちらで解説しています。
 
 
システムトレイアイコンにコンテキストメニューを表示する

import flash.desktop.NativeApplication;
import flash.desktop.SystemTrayIcon;
import flash.display.BitmapData;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.events.Event;

// システムトレイアイコンに対応している
if(NativeApplication.supportsSystemTrayIcon){

	// ------------------------------------------------------------
	// サブ用メニューを作成
	// ------------------------------------------------------------
	// NativeMenu オブジェクトを作成
	var menu_child:NativeMenu = new NativeMenu();

	// 「サブアイテム0」を作成し、最後尾に登録
	var menu_child_item_0:NativeMenuItem = new NativeMenuItem("サブアイテム0");
	menu_child.addItem(menu_child_item_0);

	// 「サブアイテム1」を作成し、最後尾に登録
	var menu_child_item_1:NativeMenuItem = new NativeMenuItem("サブアイテム1");
	menu_child.addItem(menu_child_item_1);


	// ------------------------------------------------------------
	// ルート用メニューを作成
	// ------------------------------------------------------------
	// NativeMenu オブジェクトを作成
	var menu:NativeMenu = new NativeMenu();

	// メニューが選択されたときに呼び出されるイベント
	menu.addEventListener(Event.SELECT , function (e:Event):void{
		// 選択されたメニューアイテム
		var menu_item:NativeMenuItem = e.target as NativeMenuItem;
		trace(menu_item.label);
	});

	// 「ルートアイテム0」を作成し、最後尾に登録
	var menu_item_0:NativeMenuItem = new NativeMenuItem("ルートアイテム0");
	menu.addItem(menu_item_0);

	// 「ルートアイテム1」を作成し、最後尾に登録
	var menu_item_1:NativeMenuItem = new NativeMenuItem("ルートアイテム1");
	menu.addItem(menu_item_1);

	// 「ルートアイテム2」を作成し、最後尾に登録
	var menu_item_2:NativeMenuItem = new NativeMenuItem("ルートアイテム2");
	menu.addItem(menu_item_2);

	// サブメニューとして登録
	menu_item_2.submenu = menu_child;


	// ------------------------------------------------------------
	// システムトレイアイコン用コンテキストメニューを表示
	// ------------------------------------------------------------
	var app:NativeApplication = NativeApplication.nativeApplication;

	// SystemTrayIcon オブジェクトを取得する
	var system_tray_icon:SystemTrayIcon = app.icon as SystemTrayIcon;

	// システムアイコン用ビットマップを設定する
	system_tray_icon.bitmaps = [new BitmapData(128, 128 , true , 0xFFFF0000)];

	// システムトレイアイコンに、ネイティブメニューを登録する
	system_tray_icon.menu = menu;

}
 

■ドックアイコン用コンテキストメニューとして表示する


ドックアイコン上で動作する、コンテキストメニューとして表示することができます。
 
詳しい登録方法は、こちらで解説しています。
 
 
ドックアイコンにコンテキストメニューを表示する

import flash.desktop.NativeApplication;
import flash.desktop.DockIcon;
import flash.display.BitmapData;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.events.Event;

// ドックアイコンに対応している
if(NativeApplication.supportsDockIcon){

	// ------------------------------------------------------------
	// サブ用メニューを作成
	// ------------------------------------------------------------
	// NativeMenu オブジェクトを作成
	var menu_child:NativeMenu = new NativeMenu();

	// 「サブアイテム0」を作成し、最後尾に登録
	var menu_child_item_0:NativeMenuItem = new NativeMenuItem("サブアイテム0");
	menu_child.addItem(menu_child_item_0);

	// 「サブアイテム1」を作成し、最後尾に登録
	var menu_child_item_1:NativeMenuItem = new NativeMenuItem("サブアイテム1");
	menu_child.addItem(menu_child_item_1);


	// ------------------------------------------------------------
	// ルート用メニューを作成
	// ------------------------------------------------------------
	// NativeMenu オブジェクトを作成
	var menu:NativeMenu = new NativeMenu();

	// メニューが選択されたときに呼び出されるイベント
	menu.addEventListener(Event.SELECT , function (e:Event):void{
		// 選択されたメニューアイテム
		var menu_item:NativeMenuItem = e.target as NativeMenuItem;
		trace(menu_item.label);
	});

	// 「ルートアイテム0」を作成し、最後尾に登録
	var menu_item_0:NativeMenuItem = new NativeMenuItem("ルートアイテム0");
	menu.addItem(menu_item_0);

	// 「ルートアイテム1」を作成し、最後尾に登録
	var menu_item_1:NativeMenuItem = new NativeMenuItem("ルートアイテム1");
	menu.addItem(menu_item_1);

	// 「ルートアイテム2」を作成し、最後尾に登録
	var menu_item_2:NativeMenuItem = new NativeMenuItem("ルートアイテム2");
	menu.addItem(menu_item_2);

	// サブメニューとして登録
	menu_item_2.submenu = menu_child;


	// ------------------------------------------------------------
	// ドックアイコン用コンテキストメニューを表示
	// ------------------------------------------------------------
	var app:NativeApplication = NativeApplication.nativeApplication;

	// DockIcon オブジェクトを取得する
	var dock_icon:DockIcon = app.icon as DockIcon;

	// システムアイコン用ビットマップを設定する
	dock_icon.bitmaps = [new BitmapData(128, 128 , true , 0xFFFF0000)];

	// ドックアイコンに、ネイティブメニューを登録する
	dock_icon.menu = menu;

}