Adobe AIR プログラミング講座

 

DockIcon について

 


■DockIcon について


DockIcon クラスは、 OS のシステムアイコンに関する機能がまとまっています。
 
基本的に、Macintosh で利用可能です。
 
Windows と Linux の場合は、SystemTrayIcon クラスを使用します。
 
SystemTrayIcon クラスについては、こちらで解説しています。
 

■DockIcon に対応しているか調べる


DockIcon をサポートしているか調べるには、NativeApplication.supportsDockIcon プロパティを使用します。
 
true であれば利用可能です。
 
DockIcon をサポートしているか調べる

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 = "DockIcon のサポート:" + NativeApplication.supportsDockIcon;
 

■DockIcon オブジェクトを取得する


DockIcon オブジェクトを取得するには、NativeApplication クラスの icon プロパティを使用します。
 
ドックアイコンに対応している場合、DockIcon オブジェクトが格納されています。
 
ドックアイコンに対応していない場合、「InteractiveIcon クラスから派生している未知のオブジェクト」が格納されている可能性があります。
 
エラーの原因となるので、必ずサポートしているか調べる必要があります。
 
DockIcon オブジェクトを取得する

import flash.desktop.NativeApplication;
import flash.desktop.DockIcon;

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

	var app:NativeApplication = NativeApplication.nativeApplication;

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

}
 


 

システムアイコンを設定する

 


■システムアイコンを設定する


システムアイコンを可視表示するには、システムアイコンの設定を行います。
 
システムアイコンを設定するには、bitmaps プロパティを使用します。
 
BitmapData オブジェクトを配列に格納して、bitmaps プロパティに渡します。
 
BitmapData クラスの使い方は、こちらで解説しています。
 
アイコン用ビットマップは、以下のサイズで用意します。(すべて用意する必要はありません)
 
16 * 16
32 * 32
48 * 48
128 * 128
512 * 512
 
配列に格納した BitmapData オブジェクトの中から、最適なサイズのビットマップが、システムアイコンとして表示されます
 
システムアイコンを設定する

import flash.desktop.NativeApplication;
import flash.desktop.DockIcon;
import flash.display.BitmapData;

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

	var app:NativeApplication = NativeApplication.nativeApplication;

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

	// アイコン用 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);

	// システムアイコン用ビットマップを設定する
	dock_icon.bitmaps = [icon_16 , icon_32 , icon_128];

}
 

■システムアイコンを非表示に設定する


システムアイコンを非表示に変更するには、bitmaps プロパティに、空の配列をセットします。
 
システムアイコンを非表示に設定する

import flash.desktop.NativeApplication;
import flash.desktop.DockIcon;

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

	var app:NativeApplication = NativeApplication.nativeApplication;

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

	// システムアイコンを非表示に設定する
	dock_icon.bitmaps = [];

}
 

■システムアイコンのビットマップのサイズを調べる


現在表示されている、システムアイコンのビットマップのサイズを調べるには、以下のプロパティを使用します。
 
width プロパティから、幅が取得できます。
 
height プロパティから、高さが取得できます。
 
システムアイコンのビットマップのサイズを調べる

import flash.desktop.NativeApplication;
import flash.desktop.DockIcon;
import flash.display.BitmapData;

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

	var app:NativeApplication = NativeApplication.nativeApplication;

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

	// アイコン用 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);

	// システムアイコン用ビットマップを設定する
	dock_icon.bitmaps = [icon_16 , icon_32 , icon_128];

	// システムアイコンのビットマップのサイズを調べる
	var w:int = dock_icon.width;
	var h:int = dock_icon.height;
	trace("width:" + w + " height:" + h);

}
 


 

コンテキストメニューを使用する

 


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


コンテキストメニューを表示するには、menu プロパティを使用します。
 
menu プロパティに、NativeMenu オブジェクトを渡します。
 
NativeMenu クラスの使い方については、こちらで解説しています。
 
ドックアイコン上で、マウス右ボタンを押したときに、コンテキストメニューが表示されるようになります。
 
 
ドックアイコンにコンテキストメニューを表示する

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;

}
 


 

バウンスを使用する

 


■バウンスとは?


ドックアイコンがバウンドします。
 
AIR アプリケーションが、バックグラウンドで動作している場合に動作します。
 

■バウンスを使用する


バウンスを動作させるには、bounce() メソッドを使用します。
 
引数に、NotificationType 定数をセットします。
 
定数文字列説明
NotificationType.INFORMATIONAL"informational"通常の情報の通達
NotificationType.CRITICAL"critical"重要な情報の通達
 
バウンスを使用する

import flash.desktop.NativeApplication;
import flash.desktop.DockIcon;
import flash.desktop.NotificationType;
import flash.display.BitmapData;

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

	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.bounce(NotificationType.CRITICAL);

}