Цепочка FileReference.save - PullRequest
       11

Цепочка FileReference.save

0 голосов
/ 04 апреля 2011

Я нахожусь в процессе создания приложения flashmap, которое должно сохранять все изображения, импортированные в одну папку, вместе с xml для хранения данных. Хотя мое текущее приложение работает, когда оно не встроено в HTML, оно ломается, как только возникает из-за нарушений безопасности.

Нажав кнопку сохранения, код перебирает массив изображений и создает FileReference для каждого из них и вызывает FileReference.save для сохранения изображения.

Как указано в этой документации, каждое сохранение должно инициироваться взаимодействием пользовательского интерфейса: http://kb2.adobe.com/cps/405/kb405546.html

Но в нем также говорится, что цепочка сохранений может быть создана путем вызова их из той же функции.

Однако, используя мой цикл массива изображений, сохраняется только первое изображение, и для последующих изображений не вызывается всплывающее окно. Я предполагаю, что за один раз разрешено только одно нативное всплывающее окно, но как мне это сделать? Кто-нибудь пробовал цепочку ссылок на файлы раньше?

1 Ответ

1 голос
/ 04 апреля 2011

Вставьте ссылки на файлы в вектор, добавьте прослушиватель событий для прослушивания обратного вызова Event.COMPLETE для каждой ссылки на файл.Затем внутри обратного вызова извлеките ссылку на файл из массива и вызовите следующую в cue.

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();
    }
}

Таким образом, этот код не протестирован и его также нужно будет адаптировать к вашему конкретному сценарию, ноВы все равно поймете идею.

...