SystemTrayIcon について
■SystemTrayIcon について
SystemTrayIcon クラスは、 OS のシステムアイコンに関する機能がまとまっています。
基本的に、Windows と Linux で利用可能です。
Macintosh の場合は、DockIcon クラスを使用します。
DockIcon クラスについては、こちらで解説しています。
■SystemTrayIcon に対応しているか調べる
SystemTrayIcon をサポートしているか調べるには、NativeApplication.supportsSystemTrayIcon プロパティを使用します。
true であれば利用可能です。
SystemTrayIcon をサポートしているか調べる
import flash.desktop.NativeApplication;
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 = "SystemTrayIcon のサポート:" + NativeApplication.supportsSystemTrayIcon;
■SystemTrayIcon オブジェクトを取得する
SystemTrayIcon オブジェクトを取得するには、NativeApplication クラスの icon プロパティを使用します。
システムトレイアイコンに対応している場合、SystemTrayIcon オブジェクトが格納されています。
システムトレイアイコンに対応していない場合、「InteractiveIcon クラスから派生している未知のオブジェクト」が格納されている可能性があります。
エラーの原因となるので、必ずサポートしているか調べる必要があります。
SystemTrayIcon オブジェクトを取得する
import flash.desktop.NativeApplication;
import flash.desktop.SystemTrayIcon;
// システムトレイアイコンに対応している
if(NativeApplication.supportsSystemTrayIcon){
var app:NativeApplication = NativeApplication.nativeApplication;
// SystemTrayIcon オブジェクトを取得する
var system_tray_icon:SystemTrayIcon = app.icon as SystemTrayIcon;
}
システムアイコンを設定する
■システムアイコンを設定する
システムアイコンを可視表示するには、システムアイコンの設定を行います。
システムアイコンを設定するには、bitmaps プロパティを使用します。
BitmapData オブジェクトを配列に格納して、bitmaps プロパティに渡します。
BitmapData クラスの使い方は、こちらで解説しています。
アイコン用ビットマップは、以下のサイズで用意します。(すべて用意する必要はありません)
・ | 16 * 16 |
・ | 32 * 32 |
・ | 48 * 48 |
・ | 128 * 128 |
・ | 512 * 512 |
配列に格納した BitmapData オブジェクトの中から、最適なサイズのビットマップが、システムアイコンとして表示されます。
システムアイコンを設定する
import flash.desktop.NativeApplication;
import flash.desktop.SystemTrayIcon;
import flash.display.BitmapData;
// システムトレイアイコンに対応している
if(NativeApplication.supportsSystemTrayIcon){
var app:NativeApplication = NativeApplication.nativeApplication;
// SystemTrayIcon オブジェクトを取得する
var system_tray_icon:SystemTrayIcon = app.icon as SystemTrayIcon;
// アイコン用 BitamapData オブジェクトを作成する
var icon_16:BitmapData = new BitmapData( 16, 16 , true , 0xFFFF0000);
var icon_32:BitmapData = new BitmapData( 32, 32 , true , 0xFF00FF00);
var icon_128:BitmapData = new BitmapData(128, 128 , true , 0xFF0000FF);
// システムアイコン用ビットマップを設定する
system_tray_icon.bitmaps = [icon_16 , icon_32 , icon_128];
}
■システムアイコンを非表示に設定する
システムアイコンを非表示に変更するには、bitmaps プロパティに、空の配列をセットします。
システムアイコンを非表示に設定する
import flash.desktop.NativeApplication;
import flash.desktop.SystemTrayIcon;
// システムトレイアイコンに対応している
if(NativeApplication.supportsSystemTrayIcon){
var app:NativeApplication = NativeApplication.nativeApplication;
// SystemTrayIcon オブジェクトを取得する
var system_tray_icon:SystemTrayIcon = app.icon as SystemTrayIcon;
// システムアイコンを非表示に設定する
system_tray_icon.bitmaps = [];
}
■システムアイコンのビットマップのサイズを調べる
現在表示されている、システムアイコンのビットマップのサイズを調べるには、以下のプロパティを使用します。
width プロパティから、幅が取得できます。
height プロパティから、高さが取得できます。
システムアイコンのビットマップのサイズを調べる
import flash.desktop.NativeApplication;
import flash.desktop.SystemTrayIcon;
import flash.display.BitmapData;
// システムトレイアイコンに対応している
if(NativeApplication.supportsSystemTrayIcon){
var app:NativeApplication = NativeApplication.nativeApplication;
// SystemTrayIcon オブジェクトを取得する
var system_tray_icon:SystemTrayIcon = app.icon as SystemTrayIcon;
// アイコン用 BitamapData オブジェクトを作成する
var icon_16:BitmapData = new BitmapData( 16, 16 , true , 0xFFFF0000);
var icon_32:BitmapData = new BitmapData( 32, 32 , true , 0xFF00FF00);
var icon_128:BitmapData = new BitmapData(128, 128 , true , 0xFF0000FF);
// システムアイコン用ビットマップを設定する
system_tray_icon.bitmaps = [icon_16 , icon_32 , icon_128];
// システムアイコンのビットマップのサイズを調べる
var w:int = system_tray_icon.width;
var h:int = system_tray_icon.height;
trace("width:" + w + " height:" + h);
}
コンテキストメニューを使用する
■コンテキストメニューを表示する
コンテキストメニューを表示するには、menu プロパティを使用します。
menu プロパティに、NativeMenu オブジェクトを渡します。
NativeMenu クラスの使い方については、こちらで解説しています。
システムトレイアイコン上で、マウス右ボタンを押したときに、コンテキストメニューが表示されるようになります。
システムトレイアイコンにコンテキストメニューを表示する
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;
}
ツールチップを使用する
■ツールチップとは?
ツールチップとは、マウスオーバー時に、文字列がポップアップで表示される機能です。
■ツールチップを使用する
ツールチップを設定するには、tooltip プロパティを使用します。
ツールチップとして表示したい文字列をセットします。
使用可能な文字列の長さを調べるには、SystemTrayIcon.MAX_TIP_LENGTH 定数を使用します。
マウスオーバー時に、文字列がポップアップで表示されるようになります。
ツールチップを使用する
import flash.desktop.NativeApplication;
import flash.desktop.SystemTrayIcon;
import flash.display.BitmapData;
// システムトレイアイコンに対応している
if(NativeApplication.supportsSystemTrayIcon){
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.tooltip = "表示テスト";
}