AudioLoader
appelle scope.manager.itemEnd
(via le chargeur de fichiers) après le chargement du tampon, mais son propre onLoad
après le décodage. Étant donné que le décodage du tampon est asynchrone (ou au moins, a un rappel), vous pouvez entrer dans une condition de concurrence si le chargeur audio est le dernier chargeur dans la file d'attente du gestionnaire de chargement, où le gestionnaire pense que tous ses éléments sont terminés mais les chargeurs individuels n'ont pas fini d'analyser. Nous l'avons remarqué dans notre situation de préchargement et avons dû implémenter notre propre file d'attente de chargement qui utilisait le onLoad
par élément pour cocher les éléments complets.
Malheureusement, en regardant la source FileLoader/AudioLoader, je ne sais pas comment résoudre ce problème ou si c'est même un problème ; peut-être la solution la plus simple pour clarifier dans la documentation que LoadingManager#onLoad
indique uniquement que la demande de réseau est terminée et n'indique pas que les données ont été analysées.
Hmm, donc je suppose qu'AudioLoader ne devrait pas passer le gestionnaire à FileLoader
et appeler les fonctions elles-mêmes ?
Cela résoudrait certainement le problème pour un gestionnaire de chargement personnalisé. Le gestionnaire de chargement par défaut ignorerait toujours le rappel de décodage, mais combien de personnes utilisent le gestionnaire de chargement par défaut dans ce contexte ?
J'ai rencontré le même problème. Pour le moment, il n'est pas possible de lire un fichier audio en toute sécurité après le déclenchement du rappel onLoad
du gestionnaire.
Commentaire le plus utile
Hmm, donc je suppose qu'AudioLoader ne devrait pas passer le gestionnaire à
FileLoader
et appeler les fonctions elles-mêmes ?