首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >闪存中的URLLoader事件

闪存中的URLLoader事件
EN

Stack Overflow用户
提问于 2013-01-14 20:09:35
回答 2查看 1.5K关注 0票数 0

我们可以使用URLLoader来发送超文本传输协议请求和监听来自服务器的事件。我的问题是,URLLoader在哪里以及如何调度完成、进度、ioError事件?因为在服务器端,我们不调用dispatchEvent。

代码如下:

代码语言:javascript
复制
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.addEventListener(ProgressEvent.PROGRESS, progressHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.load(new URLRequest("http://example/lookup"));

哪个对象调度前面提到的事件,它在哪里调度?

EN

回答 2

Stack Overflow用户

发布于 2013-01-14 20:41:05

它们是由虚拟机触发的,最初它发生在浏览器的NPAPI (例如Gecko API reference )或chrome中的PPAPI的某个地方(我猜,我不确定这一点)。

票数 0
EN

Stack Overflow用户

发布于 2013-01-16 00:09:20

URLLoader通过HTTP头做到这一点。我对Headers不是很熟悉,但我知道以下几点(根据经验加上阅读LiveDocs):

只要下载取得进展,就会以固定的时间间隔(在Flash SDK中预定义)调度

  • ProgressEvent.PROGRESS。它不会对下载的每个字节进行调度,也不存在任何关于如何调度的押韵或原因,除了似乎是从Content-Length标头中获取的常规时间interval
  • ProgressEvent.PROGRESS事件的bytesTotal属性。如果你在请求中发送一个Range头部,那么它应该会否定响应中的Content-Length头部,你会得到0 bytesTotal。您可以通过侦听HTTPStatusEvent.HTTP_STATUS_RESPONSE、遍历报头并查找Content-Range报头来解决此问题。您可以使用RegEx从内部处理的Object.
  • ProgressEvent.PROGRESS事件的bytesLoaded属性中获取长度。URLLoader保存下载到ByteArray的每个字节,bytesLoaded只是字节数组的length属性
  • 我不确定Event.COMPLETE是如何触发的,但我相信当根据Flash SDK内部预定义的情况调度连接时,就会发生这种情况。最常见的情况是,它会在发生404错误时进行调度。除此之外,我不确定。

除了在每个请求中发送有效的HTTP头之外,您不应该在服务器端做任何事情来正确地触发这些事件。在很大程度上,一切都是在内部处理的。

我强烈建议阅读LiveDocs。它们非常详细,并且仍然以一种非常有用和信息丰富的方式编写,这在编码文档中非常少见

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14318169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档