这个限制有点含糊。它是指我只能从已注册为某些类型用户事件侦听器的事件处理函数内部调用FileReference.save()方法吗?如果是这样的话,那么哪些用户事件是有效的? (也许有一种事件永远不会被应用程序的用户交互所调度,我可以为该事件类型注册一个事件处理函数,并从该函数内部进行save()调用吗?)
我的困难在于,在我的Web服务返回将用作FileReference.save()方法调用参数的数据之前,我无法安全地调用FileReference.save()方法,因此触发FileReference.save()调用的事件实际上是ResultEvent而不是用户事件,我很谨慎地想要分派新的(伪)用户事件类型,以便能够触发FileReference.save()调用,除非它绝对是应用程序用户交互的用户事件,否则我不会这样做。
简而言之,我现在正在做的事情是:我有一个函数,它被注册为按按钮时的处理程序。在此函数中,我进行Web服务调用以从服务器获取数据。我还有一个结果处理程序功能,当Web服务调用完成时会被调用,并且正是在这里,我想调用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.
我尝试了很多方法来解决这个问题,例如创建第二个鼠标点击事件处理程序函数,并在超时时间后调用它(以给Web服务完成的时间),但我仍然遇到相同的错误。也许这种方法行不通,因为第二个函数未注册为使用其参数的事件类型的事件侦听器。
我是Flex开发的新手,也许我没有以正确的方式考虑这个问题。如果有人能提出另一种方法,我会非常感激。预先感谢您的评论或建议。
--詹姆斯