トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     AIRでタスクトレイなどにアイコンを表示
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
masamune
Åê¹ÆNo.39161
投稿日時: 2008-6-12 0:11
新米
居住地:
投稿: 25
使用環境:
AIRでタスクトレイなどにアイコンを表示
こんにちは。正宗と申します。
AIRに限定するAS3の話題もこちらでよろしいでしょうか?

DockやタスクトレイにAIRアプリで設定したアイコンを表示させたいのですが
さんざん迷って出来たのが以下のコードになります。

いちおう目的の動作はするんですが、
コードを見ていただくとわかるように、何というか…こう…非常にださいのです…



アプリケーションインストールフォルダにIcon/ds_128.pngといったアイコン画像が格納されているとして

import flash.filesystem.*;
import flash.display.BitmapData;
import flash.display.Loader;
//タスクトレイアイコン
var images:Array = [];
if (NativeApplication.supportsDockIcon) {
	var icon128:File = File.applicationDirectory.resolvePath(File.applicationDirectory.nativePath + "/Icons/ds_128.png");
	var ldr128:Loader = new Loader();
	ldr128.contentLoaderInfo.addEventListener(Event.COMPLETE, on128Loaded);
	ldr128.load(new URLRequest(icon128.url));
	function on128Loaded(event:Event):void {
		var bit128:BitmapData = new BitmapData(128,128);
		bit128.draw(ldr128);
		images.push(bit128);
		NativeApplication.nativeApplication.icon.bitmaps = images;
	}
} else if (NativeApplication.supportsSystemTrayIcon) {
	var icon16:File = File.applicationDirectory.resolvePath(File.applicationDirectory.nativePath + "/Icons/ds_16.png");
	var ldr16:Loader = new Loader();
	ldr16.contentLoaderInfo.addEventListener(Event.COMPLETE, on16Loaded);
	ldr16.load(new URLRequest(icon16.url));
	function on16Loaded(event:Event):void {
		var bit16:BitmapData = new BitmapData(16,16);
		bit16.draw(ldr16);
		images.push(bit16);
		NativeApplication.nativeApplication.icon.bitmaps = images;
	}
}



場当たり的に変数増やしてるのもそうなんですが、
特にLoader使ってEvent.COMPLETEを待ってBitmapDataにdrawしてるとこらとか
リソースを無駄に使ってる気がして、「ああ、俺、贅沢してるなあ」と逆に優越感にひたれてしまうくらい
無駄が多いような気がします(^^;)ゞ。

そこで、お手すきな方いましたら、是非とももうちょっとスマートな方法を共有させて頂きたいのですm(_ _)m。
何をもってスマートといえるかどうかは、おひとりおひとりで違うと思いますし、問題解決を望むわけではないので、
「オレの見つけたもっと良い方法はこうだよ!」的なコードがありましたら、どうぞご教授下さい。



いちおう当方の環境は
WindowsVista、FlashCS3です。
AIRは日本語通ってるんでたぶん1.1。もしかしたら1.0かもしれないです。





あとこれは相当な蛇足ですが、AIRアプリのタスクトレイにツールチップでアプリ名を表示させるコード。
これは結構自信ありますんで、よかったら参考にしてやって下さい
特に上3行は書いておくとアプリケーションXMLを簡単に読めるようになるんで、ちょっとしたことですが何かと便利かも!?

var appXml:XML = new XML(NativeApplication.nativeApplication.applicationDescriptor);
var ns:Namespace = new Namespace("http://ns.adobe.com/air/application/1.0");
default xml namespace = ns;

var icon:SystemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon;
try {
	icon.tooltip = appXml.name;
} catch (err:Error) {
}
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » AIRでタスクトレイなどにアイコンを表示 masamune 2008-6-12 0:11
     Re: AIRでタスクトレイなどにアイコンを表示 masamune 2008-6-19 2:14

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops