我可以多次调用OfflineContext的startRendering吗?

时间:2014-08-20 13:48:56

标签: javascript web-audio

是否可以在AudioCompletion事件之后调用Web Audio API的offlineAudioContext的startRendering方法?

var offline = new offlineAudioContext(1, 44100, 44100);
var osc = offline.createOscillator();
osc.connect(offline.destination);
offline.oncomplete = function(e){
    console.log(e);
};

offline.startRendering();

setTimeout(function(){
    offline.currentTime = 0;
    console.log(offline); //context still exists
    offline.startRendering(); // nothing happens
    osc.start(0);
}, 2000);

另一个问题是,完成事件后所有节点会发生什么?

1 个答案:

答案 0 :(得分:2)

一个好问题。我将此归档为问题(https://github.com/WebAudio/web-audio-api/issues/346)。我希望不会,它应该只能使用一次 - 否则我们需要处理不能线性进行的时间。 (因为大概你可能希望开始时间跳回到零。)我们还需要清除任何有状态节点的状态(如卷积器,延迟,过滤器)。

另一方面,节点 - 如果你不保留对它们的任何引用,我希望它们会被释放并可用于垃圾收集,就像任何其他JS对象一样。