我需要在 AIR 应用程序中加载任意数量的文件。
我想遍历一个 File 对象数组,并为每个人的 File.url 创建和启动 Loaders。
当它们完成后(事件 COMPLETED 或 IOErrorEvent.IO_ERROR),我想将它们的数据填充到某个地方。如果他们失败了,我想进行异常报告。我找不到从事件侦听器中引用 File 对象的任何方法(当然不是 IO_ERROR)
最好的方法是为每个将文件信息“硬编码”到其中的启动器创建单独的事件处理程序。至少,我可以将函数本身用作字典的索引:
foo(fileToLoad:文件):无效
{
var theCompletedHandler : 函数 =
{
var theFile : File = completedHandlerLookup[?????? 这个功能??????];
var theData : ImageData =
new ImageData(theFile.url, (_loader.content as Bitmap).bitmapData);
// 对数据做一些事情
删除完成的HandlerLookup[?????? 这个功能??????];
删除 errorHandlerLookup.findByValue(theFile); // [原文如此]
}
var theErrorHandler : 函数 =
{
var theFile : File = errorHandlerLookup[?????? 这个功能??????];
// 报告错误
删除errorHandlerLookup[?????? 这个功能??????];
删除完成的HandlerLookup.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(new URLRequest(fileToLoad.url));
我可以使用 event.currentTget 并将 Loader 实例用作索引吗?那会有什么奇怪的依赖吗?
干杯