0

如何从服务器下载多个图像并将它们存储在 Flash IDE、Adobe AIR 的应用程序目录中?

具体来说,我正在使用 AMFPHP 从数据库中提取路径并将它们下载到应用程序目录。

4

1 回答 1

1

如果我猜对了,您是在尝试使用 AIR 应用程序下载一些图像并将这些图片放在 Flash CS4 的文件夹中吗?

如果是这样,这在一定程度上取决于您的操作系统,因此您需要确保您的路径正确。执行 if/else 并检查 systrayIcon 或 dockIcon。

你可以通过多种方式解决这个问题。

您可以只使用 AIR 附带的 File API 将文件保存到磁盘的正确位置,或者保存到临时位置,然后将它们复制到 flash 文件夹。

您可以使用 AIR 将下载的文件写入磁盘,然后编写一个小型 JSFL 脚本并即时调用它。就像是:

var jsfl:String = 'var files = [';

for(var i:int = 0 ; i < downloadedFiles.length; i++){
 if(i < downloadedFiles.length-1) jsfl += '"'+downloadedFiles[i]+'",';
 else         jsfl += '"'+downloadedFiles[i]+'"];\n';
}

jsfl += 'for(var i = 0 ; i < files.length; i++ ){\n';
jsfl += '\tFLfile.copy(files[i],fl.configURI+'StockImages/'+files[i].substr(files[i].lastIndexOf('/')+1));\n}';

我假设下载的文件是存储写入图像路径的数组的名称。这应该会产生一个 jsfl 脚本,如:

var files = ["file:///path/file_01.jpg","file:///path/file_02.jpg","file:///path/file_03.jpg"];

for(var i = 0 ; i < files.length; i++ ){
 FLfile.copy(files[i],fl.configURI+'StockImages/'+files[i].substr(files[i].lastIndexOf('/')+1));
}

这应该将图像复制到接近 /Users/{username}/Library/Application Support/Adobe/Flash CS3 或 FlashCS4/{language}/Configuration/StockImages/ 在 mac os 和 /Users/{username}/Local Settings/ 的位置Windows 上的 Application Data/Adobe/Flash CS3 或 FlashCS4/{language}/Configuration/StockImages/ 然后您可以使用 jsfl 文件的路径作为参数调用 Flash。

另一种选择是编写一个接收 2 个参数的命令行工具:一些二进制数据和文件路径(字符串)

然后,您可以编写一个 Flash 面板(一个进行 jsfl 调用并位于 WindowSWF 文件夹中的 swf)并使用 as3 加载图像并调用命令行工具将它们写入磁盘。您将使用未记录的FLfile.runCommandLine来执行此操作。

这些选项取决于您对 AIR/JSFL/其他一些语言编写命令行工具的舒适程度。

我不确定这一切的结果是什么……可能有更简单的方法。

于 2009-11-22T13:10:22.540 回答