如何从服务器下载多个图像并将它们存储在 Flash IDE、Adobe AIR 的应用程序目录中?
具体来说,我正在使用 AMFPHP 从数据库中提取路径并将它们下载到应用程序目录。
如果我猜对了,您是在尝试使用 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/其他一些语言编写命令行工具的舒适程度。
我不确定这一切的结果是什么……可能有更简单的方法。