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.
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.
Hilfreichster Kommentar
Hmm, also sollte AudioLoader den Manager nicht an
FileLoader
und die Funktionen selbst aufrufen?