0

データストレージ用のxmlとともに、インポートされたすべての画像を単一のフォルダーに保存する必要があるマインドマップフラッシュアプ​​リを作成中です。私の現在のアプリは、HTML に埋め込まれていない場合は機能しますが、セキュリティ違反が原因ですぐに機能しなくなります。

保存ボタンをクリックすると、コードは画像の配列をループし、それぞれに対して FileReference を作成し、FileReference.save を呼び出して画像を保存します。

このドキュメントに記載されているように、各保存は UI インタラクションによってトリガーされる必要があります: http://kb2.adobe.com/cps/405/kb405546.html

ただし、同じ関数から呼び出して一連の保存を行うこともできます。

ただし、画像配列ループを使用すると、最初の画像のみが保存され、後続の画像に対してポップアップは呼び出されません。私の推測では、一度に許可されるネイティブ ポップアップは 1 つだけですが、これを行うにはどうすればよいでしょうか? 以前にファイル参照をチェーンしようとした人はいますか?

4

1 に答える 1

1

ファイル参照をベクターにプッシュし、各ファイル参照で Event.COMPLETE コールバックをリッスンするイベント リスナーを追加します。次に、コールバック内で、ファイル参照を配列からポップし、キューで次のものを呼び出します。

var myFiles:Vector.<FileReference> = new Vector.<FileReference>();

//Populate the vector (this example assumes you can figure this out

//While populating the vector, add the event listener to the file reference for the COMPLETE event.
myRef.addEventListener(Event.COMPLETE, onFileSaved);
myFiles.push(myRef);

private function onFileSaved(e:Event):void
{
    var i:int = 0;
    for(i; i < myFiles.length; ++i){
        if(myFiles[i] == FileReference(e.currentTarget)){
            FileReference(e.currentTarget).removeEventListener(Event.COMPLETE, onFileSaved);
            myFiles.splice(i, 1);
        }
    }

    if(myFiles.length > 0){
        FileReference(myFiles[0]).save();
    }
}

したがって、このコードはテストされておらず、特定のシナリオに合わせて調整する必要がありますが、とにかくアイデアは得られます.

于 2011-04-04T11:37:27.893 に答える