Three.js: AudioLoader 和 LoadingManager onLoad Race

创建于 2017-02-02  ·  3评论  ·  资料来源: mrdoob/three.js

问题描述

AudioLoader在加载缓冲区后调用scope.manager.itemEnd (通过文件加载器),但在解码后调用它自己的onLoad 。 由于解码缓冲区是异步的(或者至少有一个回调),如果音频加载器是加载管理器队列中的最后一个加载器,则管理器认为它的所有项目都已完成,但个别加载器还没解析完。 我们在预加载情况下注意到了这一点,并且必须实现我们自己的加载队列,该队列使用每个项目onLoad来勾选完整的项目。

不幸的是,在查看 FileLoader/AudioLoader 源代码时,我不确定如何解决这个问题,或者这是否是一个问题; 也许最简单的解决方案是在文档中澄清LoadingManager#onLoad仅表示网络请求已完成,并不表示数据已被解析。

三.js版本
  • [x] r84
浏览器
  • [x] 所有这些
操作系统
  • [x] 所有这些
Bug Loaders

最有用的评论

嗯,所以我猜AudioLoader不应该将管理器传递给FileLoader并调用函数本身?

所有3条评论

嗯,所以我猜AudioLoader不应该将管理器传递给FileLoader并调用函数本身?

这肯定会为自定义加载管理器修复它。 默认加载管理器仍然会忽略解码回调,但是有多少人在这种情况下使用默认加载管理器?

我遇到了同样的问题。 目前,在经理onLoad回调触发后无法安全地播放音频文件。

此页面是否有帮助?
0 / 5 - 0 等级