AudioLoader
は、バッファのロード後に(ファイルローダーを介して) scope.manager.itemEnd
AudioLoader
呼び出しますが、デコード後には独自のonLoad
呼び出します。 バッファーのデコードは非同期である(または少なくともコールバックがある)ため、オーディオローダーがロードマネージャーのキューの最後のローダーである場合、競合状態になる可能性があります。マネージャーは、すべてのアイテムが終了したと見なしますが、個々のローダーは解析が終了していません。 プリロードの状況でこれに気づき、アイテムごとのonLoad
を使用して完全なアイテムをチェックする独自のロードキューを実装する必要がありました。
残念ながら、FileLoader / AudioLoaderのソースを見ると、これを修正する方法がわかりません。 LoadingManager#onLoad
はネットワーク要求が終了したことを示しているだけで、データが解析されたことを示していないことをドキュメントで明確にするための最も簡単な解決策かもしれません。
うーん、 AudioLoaderはマネージャーをFileLoader
渡して、関数自体を呼び出すべきではないと思いますか?
それは間違いなくカスタムローディングマネージャーのためにそれを修正するでしょう。 デフォルトのローディングマネージャーは引き続きデコードコールバックを無視しますが、このコンテキストでデフォルトのローディングマネージャーを使用する人は何人いますか?
私は同じ問題を経験しました。 現時点では、マネージャーのonLoad
コールバックが発生した後、オーディオファイルを安全に再生することはできません。
最も参考になるコメント
うーん、 AudioLoaderはマネージャーを
FileLoader
渡して、関数自体を呼び出すべきではないと思いますか?