Adobe AIR プログラミング講座

 

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 = "表示テスト";

}