Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Timer и FileReference (http://www.flasher.ru/forum/showthread.php?t=151469)

Shasoft 28.02.2011 15:44

Timer и FileReference
 
При выполнении "тяжелых" (долгих) операций я
1. Вывожу окно вида "выполняется операция XXX..."
2. Создаю таймер и запускаю его на выполнения с повторением 1 раз.
3. Тяжелую операцию выполняю в функции таймера, а в конце скрываю сообщение.
Всё работает отлично. Но теперь понадобилось после выполнения этой тяжелой операции сохранить данные в файл. Однако, при вызове
Код AS3:

FileReference.save(data, filename);

программа зависает.
Есть ли какое то решение для данной проблемы?
Т.е. вывел сообщение, выполнил операцию, сохранил результат в файл, скрыл сообщение.

cleptoman 28.02.2011 16:10

насколько помню, методы save/browse/download работают после действий юзера(могу ошибаться). т.е. по клику на какую-нибудь кнопку(например).
и для save нужен 10+ плеер (на всякий случай)

Shasoft 28.02.2011 16:12

Ясно. Спасибо за разъяснение. Надо думать, как лучше изловчится, чтобы не напрягать пользователя лишним кликом.
p.s. Про 10+ я знаю.

shootkin 28.02.2011 16:16

Метод save() класса FileReference не статический. Непонятно как оно вообще скомпилировалось. Или экземпляр класса FileReference у вас так и называется FileReference?
И, кстати, на всякий случай этот объект лучше поберечь от сборщика мусора. А то мало ли, вдруг еще удалится прямо во время сохранения.

in4core 28.02.2011 16:28

У меня есть мнение, что во время сохранения у вас начинает накрываться таймер, вот и виснет все. перед сохранением стоит остновить таймер, а после сохранения запросто запускать снова.
cleptoman вы не правы, клик тут не причем, можно вызвать и без клика.

Shasoft 28.02.2011 16:37

Цитата:

Сообщение от shootkin (Сообщение 976885)
Метод save() класса FileReference не статический.

Это я просто написал так. Само собой вызываю я его не статически. Т.е. создаю объект и уже у него вызываю. Это я для сокращения написал в таком виде.

Цитата:

Сообщение от in4core (Сообщение 976890)
У меня есть мнение, что во время сохранения у вас начинает накрываться таймер, вот и виснет все. перед сохранением стоит остновить таймер, а после сохранения запросто запускать снова.
cleptoman вы не правы, клик тут не причем, можно вызвать и без клика.

Вообще таймер установлен в repeatCount = 1, так что, по идее, не должен.
Сделал принудительную остановку по stop(), все-равно ошибка таже.

cleptoman 28.02.2011 17:36

special for in4core:

Цитата:

save () метод
public function save(data:*, defaultFileName:String = null):void

Язык версии : ActionScript 3.0
Версии среды выполнения: 10, 1.5

Этот метод можно вызывать только в ответ на пользовательское событие (например, в обработчике событий щелчка мыши или нажатия клавиши). В противном случае в результате вызова этого метода в приложении Flash Player возникает ошибка.
хелп рулит )

Shasoft 28.02.2011 17:40

Гы! :) Именно там то я и не подумал посмотреть. Спасибо.


Часовой пояс GMT +4, время: 19:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.