NativeMenu について
NativeMenu クラスについて
■NativeMenu クラスについて
NativeMenu クラスは、メニューに関する機能がまとまっています。
ウィンドウのメニューや、コンテキストメニューの作成が可能です。
コンテキストメニューといえば、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 を指定します。 |
戻り値 | NativeMenuItem | NativeMenuItem オブジェクト |
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 オブジェクトには、以下のプロパティがあります。
プロパティ名 | 型 | 説明 |
enabled | Boolean | メニューアイテムが有効であるか |
checked | Boolean | チェックマークを表示するか |
label | String | メニューアイテムのラベル |
name | String | メニューアイテムの名前 |
data | Object | 好きなオブジェクトを、自由に格納する事ができるプロパティ |
submenu | NativeMenu | サブメニューを登録したい場合、NativeMenu オブジェクトをセット |
mnemonicIndex | int | 何番目の文字をニーモニック文字として利用するかを指定 |
keyEquivalent | String | ショートカットキーを文字列で指定 |
keyEquivalentModifiers | Array | ショートカットキーのモディファイアキーコードを配列で指定 |
■名前について(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;
}