Three.js: AudioLoader und LoadingManager onLoad Race

Erstellt am 2. Feb. 2017  ·  3Kommentare  ·  Quelle: mrdoob/three.js

Beschreibung des Problems

AudioLoader ruft scope.manager.itemEnd (über den Dateilader) nach dem Laden des Puffers auf, aber sein eigenes onLoad nach der Dekodierung. Da die Dekodierung des Puffers asynchron ist (oder zumindest einen Rückruf hat), können Sie in eine Race-Bedingung geraten, wenn der Audioloader der letzte Loader in der Warteschlange des Lademanagers ist, in dem der Manager denkt, dass alle seine Elemente fertig sind, aber die einzelnen Lader habe das Parsen noch nicht abgeschlossen. Wir haben dies in unserer Preloading-Situation bemerkt und mussten unsere eigene Ladewarteschlange implementieren, die pro Artikel onLoad , um komplette Artikel abzuhaken.

Wenn ich mir die FileLoader/AudioLoader-Quelle ansehe, bin ich mir leider nicht sicher, wie ich dies beheben kann oder ob es sogar ein Problem darstellt. vielleicht die einfachste Lösung, um einfach in den Dokumenten klarzustellen, dass LoadingManager#onLoad nur anzeigt, dass die Netzwerkanforderung abgeschlossen ist, und nicht anzeigt, dass die Daten geparst wurden.

Three.js-Version
  • [x] r84
Browser
  • [x] Alle
Betriebssystem
  • [x] Alle
Bug Loaders

Hilfreichster Kommentar

Hmm, also sollte AudioLoader den Manager nicht an FileLoader und die Funktionen selbst aufrufen?

Alle 3 Kommentare

Hmm, also sollte AudioLoader den Manager nicht an FileLoader und die Funktionen selbst aufrufen?

Das würde es definitiv für einen benutzerdefinierten Lademanager beheben. Der Standard-Lademanager würde den Dekodierungs-Callback immer noch ignorieren, aber wie viele Leute verwenden den Standard-Lademanager in diesem Kontext?

Ich habe das gleiche Problem erlebt. Im Moment ist es nicht möglich, eine Audiodatei sicher abzuspielen, nachdem der onLoad Rückruf des Managers ausgelöst wurde.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen