« AIRでスタートアップ登録 | トップページ | FlashPlayer10 音にエフェクトをかける »

2008年9月24日 (水)

AIRでシステムトレイにアイコン表示

AIRでシステムトレイにアイコンを表示させる方法。(AIR1.1)

アイコンはBitmapDataを使えます。setSystemTrayに引数で渡す形にしてます。
本当は16x16とか128x128とか複数用意するほうがいいんだろうけど、気にならなければ1つ用意すれば大丈夫です。
複数のサイズを用意した場合は一番近い大きさのを自動で伸縮して表示してくれるっぽいです。

↓これでWin/Mac両方に対応します。

public function setSystemTray(icon:BitmapData):void {
	if (NativeApplication.supportsSystemTrayIcon || NativeApplication.supportsDockIcon) {
		NativeApplication.nativeApplication.autoExit = true;
		if (NativeApplication.supportsSystemTrayIcon) {
			systemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon;
			systemTrayIcon.tooltip = "テストアプリ";
			setIconMenu();
			systemTrayIcon.menu = systemTrayMenu; // Configure of menu
		} else {
			systemDockIcon = NativeApplication.nativeApplication.icon as DockIcon;
			this.setIconMenu();
			systemDockIcon.menu = systemTrayMenu;
		}
		NativeApplication.nativeApplication.icon.bitmaps = [icon];
	}
}

右クリックで出てくるメニューを設定できます。

private function setIconMenu():void{
	systemTrayMenu = new NativeMenu();

	var frontMenuItem:NativeMenuItem = new NativeMenuItem("常に前に表示/非表示");
	frontMenuItem.addEventListener(Event.SELECT, alwaysFront);

	var miniMenuItem:NativeMenuItem = new NativeMenuItem("最小化");
	miniMenuItem.addEventListener(Event.SELECT, minimize);

	var maxMenuItem:NativeMenuItem = new NativeMenuItem("元に戻す");
	maxMenuItem.addEventListener(Event.SELECT, maximize);

	var sep1MenuItem:NativeMenuItem = new NativeMenuItem("セパレータ", true);

	var exitMenuItem:NativeMenuItem = new NativeMenuItem("終了");
	exitMenuItem.addEventListener(Event.SELECT, close);

	systemTrayMenu.addItem(frontMenuItem);
	systemTrayMenu.addItem(miniMenuItem);
	systemTrayMenu.addItem(maxMenuItem);
	systemTrayMenu.addItem(sep1MenuItem);
	systemTrayMenu.addItem(exitMenuItem);
}
private function minimize(e:Event):void {
	stage.nativeWindow.minimize();
}
private function maximize(e:Event):void {
	stage.nativeWindow.restore();
	nativeWindow.activate();
}
private function close(e:Event):void {
	nativeWindow.close();
	stage.nativeWindow.close();
}
private function alwaysFront(e:Event):void {
	nativeWindow.activate();
	nativeWindow.alwaysInFront = !nativeWindow.alwaysInFront;
}

ここに書く用にちょっと書き換えたのでどっかおかしいかも。

もうCS4出るのか。。

|

« AIRでスタートアップ登録 | トップページ | FlashPlayer10 音にエフェクトをかける »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/183790/23987436

この記事へのトラックバック一覧です: AIRでシステムトレイにアイコン表示:

« AIRでスタートアップ登録 | トップページ | FlashPlayer10 音にエフェクトをかける »