Three.js: AudioLoaderとLoadingManageronLoad Race

作成日 2017年02月02日  ·  3コメント  ·  ソース: mrdoob/three.js

問題の説明

AudioLoaderは、バッファのロード後に(ファイルローダーを介して) scope.manager.itemEnd AudioLoader呼び出しますが、デコード後には独自のonLoad呼び出します。 バッファーのデコードは非同期である(または少なくともコールバックがある)ため、オーディオローダーがロードマネージャーのキューの最後のローダーである場合、競合状態になる可能性があります。マネージャーは、すべてのアイテムが終了したと見なしますが、個々のローダーは解析が終了していません。 プリロードの状況でこれに気づき、アイテムごとのonLoadを使用して完全なアイテムをチェックする独自のロードキューを実装する必要がありました。

残念ながら、FileLoader / AudioLoaderのソースを見ると、これを修正する方法がわかりません。 LoadingManager#onLoadはネットワーク要求が終了したことを示しているだけで、データが解析されたことを示していないことをドキュメントで明確にするための最も簡単な解決策かもしれません。

Three.jsバージョン
  • [x] r84
ブラウザ
  • [x]それらすべて
OS
  • [x]それらすべて
Bug Loaders

最も参考になるコメント

うーん、 AudioLoaderはマネージャーをFileLoader渡して、関数自体を呼び出すべきではないと思いますか?

全てのコメント3件

うーん、 AudioLoaderはマネージャーをFileLoader渡して、関数自体を呼び出すべきではないと思いますか?

それは間違いなくカスタムローディングマネージャーのためにそれを修正するでしょう。 デフォルトのローディングマネージャーは引き続きデコードコールバックを無視しますが、このコンテキストでデフォルトのローディングマネージャーを使用する人は何人いますか?

私は同じ問題を経験しました。 現時点では、マネージャーのonLoadコールバックが発生した後、オーディオファイルを安全に再生することはできません。

このページは役に立ちましたか?
0 / 5 - 0 評価