0

複数の画像をサーバーからダウンロードして、Flash IDE や Adob​​e AIR のアプリケーション ディレクトリに保存するにはどうすればよいですか?

具体的には、AMFPHP を使用して DB からパスを取得し、それらをアプリケーション ディレクトリにダウンロードしています。

4

1 に答える 1

1

これが正しければ、AIR アプリでいくつかの画像をダウンロードして、その画像を Flash CS4 のフォルダーに入れようとしていますか?

もしそうなら、それはあなたのOSに少し依存するので、あなたのパスが正しいことを確認する必要があります. if/else を実行し、systrayIcon または DockIcon を確認します。

これには複数の方法で取り組むことができます。

AIR に付属のファイル API を使用して、ファイルをディスクの適切な場所に保存するか、一時的な場所に保存してからフラッシュ フォルダーにコピーすることができます。

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}';

DownloadFiles は、書き込まれた画像へのパスを格納する配列の名前であると想定しています。これにより、次のような 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));
}

これにより、Mac OS では /Users/{username}/Library/Application Support/Adobe/Flash CS3 または FlashCS4/{language}/Configuration/StockImages/ および /Users/{username}/Local Settings/ に近い場所に画像がコピーされます。 Application Data/Adobe/Flash CS3 または FlashCS4/{language}/Configuration/StockImages/ (Windows の場合) 次に、jsfl ファイルへのパスを引数として Flash を呼び出すことができます。

もう 1 つのオプションは、バイナリ データとファイル パス (文字列) の 2 つの引数を受け取るコマンド ライン ツールを作成することです。

その後、Flash パネル (jsfl 呼び出しを行い、WindowSWF フォルダーに存在する swf) を記述し、as3 を使用してイメージをロードし、コマンドライン ツールを呼び出してディスクに書き込むことができます。これを行うには、文書化されていないFLfile.runCommandLineを使用します。

オプションは、コマンドライン ツールを作成するための AIR/JSFL/その他の言語の使いやすさのレベルによって異なります。

このすべての結果がどうなるかはわかりません...もっと簡単な方法があるかもしれません。

于 2009-11-22T13:10:22.540 に答える