Ich versuche einen sehr einfachen Musik-Player mit Web Audio API zu erstellen. Eine der Voraussetzungen ist eine Funktion, die nach Beendigung eines Tracks automatisch gestartet wird.In HTML5 WebAudio wissen, ob der Sound gestoppt wurde oder beendet wurde?
Momentan abonniere ich das 'beendete' Event. Etwas entlang der Linien mit
nodeSource.onEnded = function() {}
nodeSource.start(0, offset, duration);
Das Problem kommt von der Tatsache, dass ‚onended‘ wird in zwei Fällen ausgelöst:
- Sound Spielen fertig sind (genau das, was gebraucht wird)
- jemand tatsächlich gestoppt den Ton (wird überhaupt nicht benötigt)
Ich brauche eine Möglichkeit, diese beiden Fälle zu trennen. Momentan konnte ich keinen Wert für die aktuelle Position innerhalb des Soundpuffers finden, daher konnte ich ihn mit dem Zeitpunkt vergleichen, an dem der Sound enden sollte.
Ich verstehe, dass es möglich ist, einen separaten Timer zu Beginn der Wiedergabe zu erstellen und dann zu überprüfen, ob der Sound noch richtig spielt, bevor es aufhören sollte, aber das ist eine wirklich seltsame Art, es zu tun.
Gibt es eine Möglichkeit, mit Web Audio selbst das zu bekommen, was ich brauche? Oder vielleicht eine andere, weniger komische Art?
Wie stoppt der Benutzer den Ton? Haben Sie eine Schaltfläche, auf die geklickt wird? Wenn ja, wie Raymond Toy erwähnt, sollten Sie in der Lage sein, zwischen einem vom Benutzer initiierten "on-ended" -Ereignis und dem Zeitpunkt, zu dem das Lied tatsächlich fertig ist, zu entziffern. – tpdietz
Ja, es gibt einen Button geklickt. Es scheint die beste Lösung zu sein, obwohl ich wirklich gehofft habe, dass es einen Weg gibt, WebAudio zu benutzen, um die Aufgabe zu lösen. – North