Мне нужно вызвать FileReference.save () после завершения вызова веб-службы, но у этого метода есть ограничение: «В Flash Player вы можете успешно вызвать этот метод только в ответ на пользовательское событие (например, в обработчике событий для события щелчка мыши или нажатия клавиши). В противном случае вызов этого метода приведет к тому, что Flash Player выдаст исключение Error ". (из документации здесь)
Это ограничение немного расплывчато. Означает ли это, что я могу вызывать метод FileReference.save () только из функции обработчика событий, которая зарегистрирована как прослушиватель для определенных типов пользовательских событий? Если да, то какие именно пользовательские события действительны? (Возможно, есть событие, которое никогда не будет отправлено при взаимодействии пользователя с моим приложением, и я мог бы зарегистрировать функцию обработчика событий для этого типа события и сделать вызов save () из этой функции?)
Моя трудность заключается в том, что я не могу безопасно вызвать метод FileReference.save () до тех пор, пока моя веб-служба не вернется с данными, которые будут использоваться в качестве аргумента вызова метода FileReference.save (), поэтому событие, запускающее FileReference. Вызов save () на самом деле является ResultEvent, а не пользовательским событием, и я опасаюсь отправлять новый (поддельный) тип пользовательского события, чтобы иметь возможность запускать вызов FileReference.save (), если это определенно не пользовательское событие, которое никогда не будет отправлен в результате реального взаимодействия пользователя с моим приложением.
Вкратце, сейчас я делаю следующее: у меня есть функция, зарегистрированная как обработчик нажатия кнопки. В этой функции я вызываю свой веб-сервис для получения данных с сервера. У меня также есть функция обработчика результатов, которая вызывается после завершения вызова веб-службы, и именно здесь я хочу вызвать метод FileReference.save (), так как на данный момент я знаю, что данные готовы к сохранению в файл. Но вышеупомянутое ограничение мешает мне это сделать - я получаю сообщение об ошибке:
Error #2176: Certain actions, such as those that display a pop-up window,
may only be invoked upon user interaction, for example by a mouse click
or button press.
Я пробовал много вещей, чтобы обойти это, например, создать вторую функцию обработчика событий щелчка мышью с вызовом FileReference.save () внутри и вызвать ее после интервала тайм-аута (чтобы дать веб-сервису время для завершения), но я продолжаю возникает та же ошибка - возможно, этот подход не работает, поскольку вторая функция не зарегистрирована как прослушиватель событий для типа события, используемого в качестве его аргумента.
Я новичок в разработке Flex, поэтому, возможно, я просто неправильно об этом думаю. Если кто-то может предложить другой подход, я был бы очень признателен. Заранее благодарим за ваши комментарии или предложения.
--Джеймс