FileReference.save () de Flex solo se puede invocar en un controlador de eventos de usuario: ¿cómo puedo solucionar esto?

Necesito llamar a FileReference.save () después de que se haya completado una llamada al servicio web, pero este método tiene una restricción: "En Flash Player, solo puede llamar a este método con éxito en respuesta a un evento de usuario (por ejemplo, en un controlador de eventos) para un clic del mouse o un evento de pulsación de tecla). De lo contrario, al llamar a este método, Flash Player genera una excepción de error ". (de la documentaciónaquí)

Esta restricción es un poco vaga. ¿Significa que solo puedo llamar al método FileReference.save () desde una función de controlador de eventos que está registrada como escucha para ciertos tipos de eventos de usuario? Si es así, ¿qué eventos de usuario son válidos exactamente? (¿Quizás haya un evento que nunca será enviado por la interacción del usuario con mi aplicación y podría registrar una función de controlador de eventos para ese tipo de evento y hacer la llamada save () desde esa función?)

Mi dificultad es que no puedo llamar con seguridad al método FileReference.save () hasta que mi servicio web regrese con los datos que se usarán como argumento de la llamada al método FileReference.save (), por lo que el evento que desencadena la FileReference. La llamada save () es en realidad un EventEvent en lugar de un evento de usuario, y desconfío de enviar un nuevo tipo de evento de usuario (falso) para poder activar la llamada FileReference.save () a menos que sea definitivamente un evento de usuario que nunca se enviaría como resultado de la interacción real del usuario con mi aplicación.

En pocas palabras, lo que estoy haciendo ahora es esto: tengo una función que está registrada como controlador para hacer clic en un botón. En esta función, realizo una llamada a mi servicio web para obtener datos del servidor. También tengo una función de controlador de resultados que se invoca cuando se completa la llamada al servicio web, y es aquí donde quiero llamar al método FileReference.save () ya que es en este punto que sé que los datos están listos para guardarse en un archivo. Pero la restricción antes mencionada me está bloqueando para hacer esto: me sale un error:

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.

He intentado muchas cosas para solucionar esto, como crear una segunda función de controlador de eventos de clic del mouse con la llamada FileReference.save () dentro y llamar después de un intervalo de tiempo de espera (para dar tiempo al servicio web para completar), pero sigo encontrándose con el mismo error: tal vez ese enfoque no funciona ya que la segunda función no está registrada como detector de eventos para el tipo de evento utilizado como argumento.

Soy nuevo en el desarrollo de Flex, así que quizás no estoy pensando en esto de la manera correcta. Si alguien puede sugerir otro enfoque, realmente lo agradecería. Gracias de antemano por sus comentarios o sugerencias.

--James

Respuestas a la pregunta(6)

Su respuesta a la pregunta