多くのオペレーティングシステムには、アプリケーションを表すアイコンを格納できるタスクバー(Mac OS X のドックなど)があります。Adobe® AIR® には、
NativeApplication.nativeApplication.icon
プロパティを通じてアプリケーションタスクバーアイコンを操作するためのインターフェイスが用意されています。
タスクバーアイコンについて
AIR では、
NativeApplication.nativeApplication.icon
オブジェクトが自動的に作成されます。オブジェクトのタイプは、オペレーティングシステムに応じて、DockIcon または SystemTrayIcon のいずれかになります。現在のオペレーティングシステムでこれらの InteractiveIcon サブクラスのどちらがサポートされるかは、
NativeApplication.supportsDockIcon
プロパティと
NativeApplication.supportsSystemTrayIcon
プロパティを使用して確認できます。InteractiveIcon 基本クラスには、
width
プロパティ、
height
プロパティおよび
bitmaps
プロパティが用意されており、これらを使用してアイコンで使用するイメージを変更することができます。ただし、DockIcon または SystemTrayIcon 固有のプロパティを対応していないオペレーティングシステムで調べると、ランタイムエラーが発生します。
アイコンに使用するイメージを設定または変更するには、1 つ以上のイメージを格納する配列を作成し、その配列を
NativeApplication.nativeApplication.icon.bitmaps
プロパティに割り当てます。タスクバーアイコンのサイズは、オペレーティングシステムの種類によって異なる場合があります。サイズ調整による画質の劣化を防ぐには、複数のサイズのイメージを
bitmaps
配列に追加します。複数のイメージを追加した場合は、AIR によってタスクバーアイコンの現在の表示サイズに最も近いサイズが選択され、必要な場合にのみサイズが調整されます。次の例では、2 つのイメージを使用してタスクバーアイコンのイメージを設定しています。
NativeApplication.nativeApplication.icon.bitmaps =
[bmp16x16.bitmapData, bmp128x128.bitmapData];
アイコンイメージを変更するには、1 つ以上の新しいイメージを格納する配列を
bitmaps
プロパティに割り当てます。
enterFrame
イベントまたは
timer
イベントに応答してイメージを変更すると、アイコンをアニメーション化することができます。
Windows および Linux で通知領域からアイコンを削除するか、または Mac OS X でアイコンの外観をデフォルトに戻すには、
bitmaps
に空の配列を設定します。
NativeApplication.nativeApplication.icon.bitmaps = [];
ドックアイコン
NativeApplication.supportsDockIcon
が
true
の場合、AIR でドックアイコンがサポートされます。
NativeApplication.nativeApplication.icon
プロパティは、ドックのアプリケーションアイコンを表します(ウィンドウドックアイコンは除く)。
注意:
AIR では、Mac OS X でのドックのウィンドウアイコンの変更はサポートされません。また、アプリケーションドックアイコンに対する変更はアプリケーションの実行中にのみ適用され、アプリケーションが終了されるとアイコンの外観は標準の外観に戻ります。
ドックアイコンのメニュー
コマンドを格納する NativeMenu オブジェクトを作成し、そのオブジェクトを
NativeApplication.nativeApplication.icon.menu
プロパティに割り当てることで、標準のドックメニューにコマンドを追加することができます。メニューのアイテムは、標準のドックアイコンメニューアイテムの上に表示されます。
ドックのバウンス
NativeApplication.nativeApplication.icon.bounce()
メソッドを呼び出すことにより、ドックアイコンをバウンスさせることができます。
bounce() priority
パラメーターを informational に設定すると、アイコンが 1 回バウンスします。critical に設定すると、ユーザーがアプリケーションをアクティブにするまでアイコンがバウンスします。
priority
パラメーターの定数は、NotificationType クラスで定義されています。
注意:
アプリケーションが既にアクティブになっている場合は、アイコンはバウンスしません。
ドックアイコンのイベント
ドックアイコンがクリックされると、NativeApplication オブジェクトから
invoke
イベントが送出されます。アプリケーションが実行されていない場合は、システムによってアプリケーションが起動されます。それ以外の場合は、
invoke
イベントは実行中のアプリケーションインスタンスに送られます。
システムトレイアイコン
NativeApplication.supportsSystemTrayIcon
が
true
の場合、AIR でシステムトレイアイコンがサポートされます(現在、Windows と大半の Linux ディストリビューションのみ該当します)。Windows および Linux では、システムトレイアイコンはタスクバーの通知領域に表示されます。デフォルトではアイコンは表示されません。アイコンを表示するには、BitmapData オブジェクトを格納する配列をアイコンの
bitmaps
プロパティに割り当てます。アイコンイメージを変更するには、新しいイメージを格納する配列を
bitmaps
に割り当てます。アイコンを削除するには、
bitmaps
を
null
に設定します。
システムトレイアイコンのメニュー
NativeMenu オブジェクトを作成し、そのオブジェクトを
NativeApplication.nativeApplication.icon.menu
プロパティに割り当てることで、システムトレイアイコンにメニューを追加することができます(オペレーティングシステムのデフォルトのメニューはありません)。システムトレイアイコンのメニューにアクセスするには、アイコンを右クリックします。
システムトレイアイコンのツールチップ
アイコンにツールチップを追加するには、tooltip プロパティを設定します。
NativeApplication.nativeApplication.icon.tooltip = "Application name";
システムトレイアイコンのイベント
NativeApplication.nativeApplication.icon プロパティによって参照される SystemTrayIcon オブジェクトから、
click
、
mouseDown
、
mouseUp
、
rightClick
、
rightMouseDown
、
rightMouseUp
の各イベントに対して ScreenMouseEvent が送出されます。これらのイベントをアイコンメニューと一緒に使用すると、アプリケーションに可視のウィンドウがない場合にユーザーがそのアプリケーションを操作できるようになります。
例:ウィンドウがないアプリケーションの作成
次の例では、システムトレイアイコンがあり、可視のウィンドウはない AIR アプリケーションを作成します(アプリケーションの
visible
プロパティは、アプリケーション記述で
true
に設定しないようにする必要があります。さもなければ、アプリケーションの起動時にウィンドウが表示されます)。
package
{
import flash.display.Loader;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.NativeWindow;
import flash.display.Sprite;
import flash.desktop.DockIcon;
import flash.desktop.SystemTrayIcon;
import flash.events.Event;
import flash.net.URLRequest;
import flash.desktop.NativeApplication;
public class SysTrayApp extends Sprite
{
public function SysTrayApp():void{
NativeApplication.nativeApplication.autoExit = false;
var icon:Loader = new Loader();
var iconMenu:NativeMenu = new NativeMenu();
var exitCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Exit"));
exitCommand.addEventListener(Event.SELECT, function(event:Event):void {
NativeApplication.nativeApplication.icon.bitmaps = [];
NativeApplication.nativeApplication.exit();
});
if (NativeApplication.supportsSystemTrayIcon) {
NativeApplication.nativeApplication.autoExit = false;
icon.contentLoaderInfo.addEventListener(Event.COMPLETE, iconLoadComplete);
icon.load(new URLRequest("icons/AIRApp_16.png"));
var systray:SystemTrayIcon =
NativeApplication.nativeApplication.icon as SystemTrayIcon;
systray.tooltip = "AIR application";
systray.menu = iconMenu;
}
if (NativeApplication.supportsDockIcon){
icon.contentLoaderInfo.addEventListener(Event.COMPLETE,iconLoadComplete);
icon.load(new URLRequest("icons/AIRApp_128.png"));
var dock:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
dock.menu = iconMenu;
}
}
private function iconLoadComplete(event:Event):void
{
NativeApplication.nativeApplication.icon.bitmaps =
[event.target.content.bitmapData];
}
}
}
注意:
Flex WindowedApplication コンポーネントを使用している場合、WindowedApplication タグの
visible
属性を
false
に設定する必要があります。この属性は、アプリケーション記述の設定より優先されます。
注意:
この例では、
AIRApp_16.png
および
AIRApp_128.png
という名前のイメージファイルがアプリケーションの
icons
サブディレクトリに含まれていることを前提にしています(サンプルのアイコンファイルは AIR SDK に含まれており、プロジェクトフォルダーにコピーできます)。
ウィンドウのタスクバーのアイコンとボタン
ウィンドウを表すアイコンは、通常はタスクバーまたはドックのウィンドウ領域に表示されます。ユーザーはこれらを使用して、バックグラウンドで実行されているウィンドウや最小化されているウィンドウに簡単にアクセスすることができます。Mac OS X のドックには、アプリケーションのアイコンと最小化された各ウィンドウのアイコンが表示されます。Microsoft Windows および Linux では、アプリケーションで表示する通常種類の各ウィンドウを表すボタンがタスクバーに表示され、各ボタンにプログラムアイコンとタイトルが表示されます。
タスクバーのウィンドウボタンの強調表示
ウィンドウがバックグラウンドで実行されているときに、ウィンドウに関連するイベントが発生したことをユーザーに通知することができます。Mac OS X では、アプリケーションドックアイコンをバウンスさせてユーザーに通知できます(
ドックのバウンス
の説明を参照)。Windows および Linux では、NativeWindow インスタンスの
notifyUser()
メソッドを呼び出すと、そのウィンドウに対応するタスクバーボタンが強調表示されます。メソッドに渡される
type
パラメーターによって、通知の緊急度が決まります。
-
NotificationType.CRITICAL
:ユーザーがウィンドウを前面に表示するまでウィンドウアイコンが点滅します。
-
NotificationType.INFORMATIONAL
:別の色でウィンドウアイコンが強調表示されます。
注意:
Linux では、サポートされている通知の種類は INFORMATIONAL のみです。
notifyUser()
関数にどの type 値を渡しても同じ効果になります。
次のステートメントでは、ウィンドウのタスクバーボタンを強調表示します。
stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
ウィンドウレベルの通知がサポートされていないオペレーティングシステムでは、
NativeWindow.notifyUser()
メソッドを呼び出しても効果はありません。ウィンドウの通知がサポートされているかどうかを確認するには、
NativeWindow.supportsNotification
プロパティを使用します。
タスクバーのボタンまたはアイコンがないウィンドウの作成
Windows オペレーティングシステムでは、
utility
または
lightweight
のタイプで作成されたウィンドウはタスクバーに表示されません。また、不可視のウィンドウもタスクバーに表示されません。
初期ウィンドウのタイプは必ず
normal
であるため、ウィンドウがタスクバーに表示されないアプリケーションを作成するには、初期ウィンドウを閉じるか、不可視のままにしておく必要があります。アプリケーションを終了しないでアプリケーションのすべてのウィンドウを閉じるには、最後のウィンドウを閉じる前に、NativeApplication オブジェクトの
autoExit
プロパティを
false
に設定します。単に初期ウィンドウが可視にならないようにするには、
<visible>false</visible>
をアプリケーション記述ファイルの
<initalWindow>
エレメントに追加します(さらに、
visible
プロパティを
true
に設定したり、ウィンドウの
activate()
メソッドを呼び出したりしないようにします)。
アプリケーションで開かれる新しいウィンドウでは、ウィンドウコンストラクターに渡される NativeWindowInitOption オブジェクトの
type
プロパティを
NativeWindowType.UTILITY
または
NativeWindowType.LIGHTWEIGHT
に設定します。
Mac OS X では、最小化されたウィンドウはドックタスクバーに表示されます。最小化されたアイコンが表示されないようにするには、ウィンドウを最小化するのではなく非表示にします。次の例では、
nativeWindowDisplayState
変更イベントをリッスンし、ウィンドウが最小化される場合にキャンセルします。その代わりに、ハンドラーでウィンドウの
visible
プロパティを
false
に設定します。
private function preventMinimize(event:NativeWindowDisplayStateEvent):void{
if(event.afterDisplayState == NativeWindowDisplayState.MINIMIZED){
event.preventDefault();
event.target.visible = false;
}
}
visible
プロパティを
false
に設定している場合に Mac OS X ドックでウィンドウが最小化されても、ドックアイコンが削除されるわけではありません。ユーザーは、引き続きアイコンをクリックしてウィンドウを再表示することができます。
|
|
|