Мне нужно вызвать FileReference.save() после завершения сеанса веб-службы, но этот метод имеет ограничение: "В Flash Player вы можете использовать этот метод только в ответ на событие пользователя (например, в обработчик события для нажатия мыши или нажатия клавиши). В противном случае вызов этого метода приводит к тому, что Flash Player выбрасывает исключение ошибки." (из документации здесь)
Это ограничение немного расплывчато. Означает ли это, что я могу вызвать метод FileReference.save() из функции обработчика событий, которая зарегистрирована как слушатель для определенных типов пользовательских событий? Если да, то какие именно пользовательские события действительны? (Возможно, событие, которое никогда не будет отправлено взаимодействием пользователя с моим приложением, и я мог бы зарегистрировать функцию обработчика событий для этого типа события и сделать вызов save() из этой функции?)
Моя трудность заключается в том, что я не могу безопасно вызвать метод FileReference.save() до тех пор, пока моя веб-служба не вернется с данными, которые будут использоваться в качестве аргумента метода метода FileReference.save(), поэтому событие, которое запускает вызов FileReference.save() на самом деле является ResultEvent, а не пользовательским событием, и я не могу обработать новый тип событий (faux) пользователя, чтобы иметь возможность запускать вызов 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, поэтому, возможно, я просто не думаю об этом правильно. Если кто-то может предложить другой подход, я бы очень признателен. Заранее благодарим за ваши комментарии или предложения.
- Джеймс