1

我正在使用 PreloadJS 作为使用 CreateJS 库构建的应用程序的一部分。PreloadJS 被用于拉入清单中列出的图形和音频文件。我已经设置了一个进度条并连接了预加载器fileprogressfileload事件来更新它。随着图像的加载,我得到了进度更新,所以我可以看到进度条一直在爬行,但我从来没有得到fileprogress音频文件的更新,只是fileload(文件已完全加载)所以进度条处于空闲状态,然后突然跳转到100%。由于音频文件是迄今为止最大的资产,就为用户提供有意义的加载进度而言,这会产生一些问题。

我查看了PreloadJS 的文档,它表明 XHR 加载是首选方法,因为它确实提供了进度更新,但 PreloadJS 可以依靠诸如基于标记 ( <audio>) 加载音频文件之类的东西。

文件加载都不是本地或跨域的,所以在我看来 PreloadJS 应该使用 XHR。

有没有办法强制 PreloadJS 对所有事情都使用 XHR,这样我就可以获得一致的进度更新,或者为什么我不会为这些更大的文件获取进度事件?

4

2 回答 2

3

我相信 PreloadJS 和 SoundJS 中有一些开放的错误会阻止音频加载报告进度。我已经记录了这两个库的问题: https://github.com/CreateJS/PreloadJS/issues/99 https://github.com/CreateJS/SoundJS/issues/119

一些附加信息: 虽然 PreloadJS 将尝试支持基于 XHR 的文件类型加载,但音频加载的工作方式略有不同。

SoundJS 实际上将功能注入 PreloadJS 来处理加载,并且不会尊重useXHR参数,而是依靠浏览器功能(和 SoundJS 插件)来加载和播放音频。不幸的是,网络音频需要一个数组缓冲区(使用 XHR 加载),而 HTML 音频需要 HTML 标签,因此播放功能决定了音频文件的加载方式。

默认情况下,SoundJS 将默认按顺序加载/使用以下插件:

  1. WebAudio(因此是 XHR)
  2. HTML(因此标签加载)

应该有利于大多数浏览器的 XHR 加载和 webaudio(IE 是最突出的,几乎总是需要 HTML 加载)。您可以在开始播放之前通过手动注册插件来强制插件顺序/

感谢您提供此信息!

于 2014-11-12T16:43:42.333 回答
2

@Lanny is correct, there are open bugs for this issue. Currently SoundJS is setup in a way that always uses Tag loading with PreloadJS, even when using WebAudio which loads via xhr. The result is that regardless of plugin, there is currently no way to get progress events.

The good news is that we are currently in the process of revising how loading works between PreloadJS and SoundJS and this issue should be resolved.

于 2014-11-12T18:31:16.123 回答