Ich baue ein Javascript-Spiel, und ich möchte eine Hintergrundmusik basierend auf Sound-Datei-Schnipsel erstellen. Kurze mp3-Dateien, um sie als einen kontinuierlichen Titel zu spielen. Ich habe versucht, einen "beendeten" Event-Handler an die Audiodatei zu binden, obwohl dies eine Verzögerung zwischen Audiofragmenten verursacht.
Um das zu lösen, habe ich eine hacky Lösung gemacht, die immer noch nicht funktioniert, indem ich das Audio 1 Sekunde vor dem Ende ändere.
%Vor%Dieses Beispiel funktioniert einmal, wenn es Zeit ist, das Fragment 2 in das Fragment 3 zu schalten, stoppt die Schleife. Die Konsolenprotokollierung des Ereignis-Listeners gibt vor dem Stoppen 4 Mal ein Protokoll aus.
Q1: Warum verschwindet dieser Eventlistener plötzlich? F2: Gibt es eine Nicht-Hack-Lösung zum Verketten dieser Audiofragmente?
Ich danke Ihnen im Voraus.
Sie haben mehr als nur Probleme beim Versuch, schnell zwischen zwei kurzen Audioclips umzuschalten. Sie werden wahrscheinlich auch schnell zwischen den beiden Audiospuren überblenden wollen, um Popping, Artefakte usw. zu vermeiden.
Hier sehen Sie ein Beispiel für das Überblenden mit Howler aus Howlith-GitHub-Problemen. Sie könnten dieses Beispiel wahrscheinlich verwenden, und halten Sie eine Warteschlange geladener Instanzen für den Übergang bereit. Ich hoffe, das hilft.
%Vor%Mit der Idee, einen timeOut in der Antwort von pantalohnes zu setzen, habe ich den folgenden Code erstellt, um die Lücke zu schließen:
%Vor%Das Timeout von 50 Millisekunden überbrückt genau die Lücke zwischen den sequenzierten Dateien.
Beantworten Sie Ihre Frage (obwohl ich sehe, dass Sie eine andere Lösung gefunden haben), ich glaube, ich habe Ihren Fehler gefunden:
Beim zweiten Aufruf von Ebuc.manageAudio () ist Ebuc.bgsong bereits festgelegt und Sie erstellen einfach ein neues Audio Ebuc.bgsong = new Audio(...)
, ohne den Listener anzuhängen, sodass Sie für keine 'timeupdate'-Ereignisse benachrichtigt werden beim Abspielen der zweiten Audiodatei ausgegeben.
Sie sollten den Listener auch vom vorherigen wiedergebenden Audio entfernen.
Also, wenn alles andere in Ordnung ist, denke ich, das sollte es beheben:
%Vor%Mehr als das, ich denke, dass, wenn Sie den Zuhörer von der vorherigen Wiedergabe-Audio richtig entfernen, Sie diesen bgnext Hack überhaupt nicht brauchen werden:
%Vor%Lass es mich wissen, wenn das funktioniert hat :)
Tags und Links javascript audio