AIR アプリにロードする必要がある任意の数のファイルがあります。
File オブジェクトの配列を反復処理し、それぞれの File.url のローダーを作成して起動したいと考えています。
それらが完了したら (イベント COMPLETED または IOErrorEvent.IO_ERROR)、データをどこかに詰め込みたいと思います。失敗した場合は、例外レポートを作成したいと思います。イベントリスナーから File オブジェクトを参照する方法が見つかりません (確かに IO_ERROR ではありません)。
最善の方法は、ファイル情報が「ハードコーディング」されたランチャーごとに個別のイベント ハンドラーを作成することです。少なくとも、関数自体を Dictionary へのインデックスとして使用できます。
foo(fileToLoad : ファイル) : void
{
var theCompletedHandler : 関数 =
{
var theFile : ファイル = completedHandlerLookup[?????? この関数??????];
var theData : ImageData =
new ImageData(theFile.url, (_loader.content as Bitmap).bitmapData);
// データで何かをする
完了したHandlerLookup[??????を削除します。この関数??????];
errorHandlerLookup.findByValue(theFile) を削除します。// [原文のまま]
}
var theErrorHandler : 関数 =
{
var theFile : ファイル = errorHandlerLookup[?????? この関数??????];
// エラーを報告する
errorHandlerLookup[?????? を削除します。この関数??????];
completedHandlerLookup.findByValue(theFile) を削除します。// [原文のまま]
}
completedHandlerLookup[theCompletedHandler] = theCompletedHandler;
errorHandlerLookup[theCompletedHandler] = theErrorHandler;
var theLoader : Loader = new Loader();
theLoader.addEventListener(Event.COMPLETE, theCompletedHandler);
theLoader.addEventListener(IOErrorEvent.IO_ERROR, theErrorHandler);
theLoader.load(新しい URLRequest(fileToLoad.url));
event.currentTaget を使用して、Loader インスタンスをインデックスとして使用できますか? それには奇妙な依存関係がありますか?
乾杯