Hallo heinetz,
sehe ich es richtig, dass Du die Zeile mit 0.200...004 zu kopieren vergessen hast?
Die Prozenttechnik von Felix funktioniert deshalb besser, weil das IEEE 754 Format Zahlen ohne Nachkommastellen immer fehlerfrei darstellen kann (solange sie nicht zu groß sind).
Wenn Du bei Fließkommazahlen bleibst, müsstest Du current.volume > 0.15
testen (dann ist es 0.2 oder mehr). Wenn dieser Test zutrifft, ziehst Du 0.1 ab. Andernfalls setzt Du es hart auf 0. Felix tut sich
Deine Abfrage von current.volume >= 0
ist auf jeden Fall falsch, weil dadurch eine negative Lautstärke entsteht. Das ist sicherlich kein definierter Wert. Wenn die Audio-Library gutmütig ist, macht sie 0 draus. Aber es könnte auch eine Exception geworfen werden.
Was deiner Funktion auch fehlt, ist der rekursive setTimeout Aufruf. Der gehört in den Teil, wo Du 0.1 abziehst, und es ist sinnvoll, wenn man die Funktion, die in setTimeout hinterlegt wird, namentlich ansprechbar ist. Wie das geht, zeigt Dir ebenfalls Felix.
clearTimeout braucht man nur dann, wenn man einen gebuchten setTimeout stornieren will. Das ist aber nur ausnahmsweise der Fall. Mit setTimeout bucht man einen einmaligen Aufruf der angegebenen Funktion; für eine periodische Wiederholung nimmt man setInterval (was man mit clearInterval beenden muss) oder man bucht in der Funktion, die von setTimeout aufgerufen wird, den nächsten Aufruf.
Rolf
sumpsi - posui - clusi