摧毁audionode的最佳方法是什么

时间:2017-11-17 14:20:37

标签: javascript html5-audio web-audio web-audio-api

我正在构建一些需要创建和销毁潜在大量音频节点的东西。据我所知,为了销毁音频节点,有必要:

  1. 将节点的所有引用设置为null或其他
  2. 调用停止方法(如果适用)
  3. 断开所有连接进出
  4. 前两个很简单,但我试图弄清楚是否可以列出所有节点的连接,还需要知道我的列表中是否还有其他内容丢失。我还需要知道如何检测未引用音频节点的存在

2 个答案:

答案 0 :(得分:1)

这是this technique

  

只要有任何对它的引用,AudioNode就会存在。有几种类型的参考:

     
      
  1. 遵循正常垃圾收集规则的普通JavaScript引用。
  2.   
  3. AudioBufferSourceNodes和OscillatorNodes的播放参考。这些节点在当前播放时保持对自己的播放引用。
  4.   
  5. 如果连接了另一个AudioNode,则会出现连接引用。
  6.   
  7. 一个尾部时间引用,只要AudioNode具有尚未发出的任何内部处理状态,它就会自行维护。例如,ConvolverNode有一个尾部,即使在收到静音输入后也会继续播放(想想在大型音乐厅拍手并继续听到整个大厅的声音回响)。某些AudioNodes具有此属性。请参阅特定节点的详细信息。
  8.         

    只要AudioContext处于活动状态,任何以循环方式连接并直接或间接连接到AudioContext的AudioDestinationNode的AudioNode都将保持活动状态。

所以,根据我的理解:

  • 只需要停止播放AudioNode。
  • 其他人最好断开连接。
  • 将它们全部断开并没有什么坏处。

答案 1 :(得分:1)

如果您只调用不带参数的 x,它将断开节点的所有输入及其所有输出。