我正在构建一个Flex应用程序,需要我下载文件。
我有以下代码:
public function execute(event:CairngormEvent) : void
{
var evt:StemDownloadEvent = event as StemDownloadEvent;
var req:URLRequest = new URLRequest(evt.data.file_path);
var localRef:FileReference = new FileReference();
localRef.addEventListener(Event.OPEN, _open);
localRef.addEventListener(ProgressEvent.PROGRESS, _progress);
localRef.addEventListener(Event.COMPLETE, _complete);
localRef.addEventListener(Event.CANCEL, _cancel);
localRef.addEventListener(Event.SELECT, _select);
localRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, _securityError);
localRef.addEventListener(IOErrorEvent.IO_ERROR, _ioError);
try {
localRef.download(req);
} catch (e:Error) {
SoundRoom.logger.log(e);
}
}
正如您所看到的,我也联系了每个可能的事件监听器。
执行此操作时,我会进入浏览窗口,并且可以选择一个位置,然后单击“保存”。在那之后,什么都没发生。
我将每个事件处理程序连接到我的记录器,并且没有一个被调用!这里有什么东西不见了吗?
答案 0 :(得分:1)
问题似乎是我的命令在完成之前就被摧毁了。
为了概念验证,我将localRef
变量设置为静态而不是实例变量,一切都成功完成!我猜Cairngorm命令尽快杀死自己!