Osilatöre başladığım zaman durdurun ve sonra yeniden başlatın; Aşağıdaki hatayı alıyorum: (Web Ses API'sı) Osilatör düğümü hatası: Birden fazla başlatma başlatılamıyor
Uncaught InvalidStateError: Failed to execute 'start' on 'OscillatorNode': cannot call start more than once.
Açıkçası ben ses "dur" için
gain
kullanabilirsiniz ama bu beni yoksul uygulama vurur. Tekrar başlatabilmek için osilatörü durdurmanın daha etkili bir yolu nedir?
kodu (jsfiddle)
var ctx = new AudioContext();
var osc = ctx.createOscillator();
osc.frequency.value = 8000;
osc.connect(ctx.destination);
function startOsc(bool) {
if(bool === undefined) bool = true;
if(bool === true) {
osc.start(ctx.currentTime);
} else {
osc.stop(ctx.currentTime);
}
}
$(document).ready(function() {
$("#start").click(function() {
startOsc();
});
$("#stop").click(function() {
startOsc(false);
});
});
(soru anda) Güncel çözüm: http://jsfiddle.net/xbqbzgt2/2/
Final çözüm: http://jsfiddle.net/xbqbzgt2/3/
Uygulama kısıtlaması gibi görünüyor .. Her bir start() 'da yeni bir' OscillatorNode 'oluşturmaya çalışabilirsiniz. –