当用户单击按钮时,会播放声音,如果再次单击该按钮,则会播放该声音的新实例。
我通过在每次单击时将新的源节点连接到音频上下文来实现。
现在说用户单击按钮1个小时,是不是每个播放完毕的源节点都被删除或保持与音频上下文的连接?
最佳答案
这是relevant specs:
因此,例如,如果AudioBufferSourceNode不具有input(3),tail-time(4),则它不链接到外部MediaStream(5)或MediaElement(6)(如果您不这样做) js代码(1)中对该节点的任何引用,以及该节点已完成播放(2),则可以将其从图形中删除,然后进行垃圾收集。
还要注意,大多数源节点无论如何都只有很少的指纹。
如果再次以AudioBufferSourceNodes为例,那么您必须了解它们不复制AudioBuffer,而只是引用它。
因此,从同一AudioBuffer创建数千个AudioBufferSourceNodes很好。
但是,从同一个ArrayBuffer创建数千个AudioBuffers,或从同一文件创建数千个ArrayBuffers,或者两者都根本不可行,因此请确保在处理click事件时,您要做的就是从现有的对象创建一个新的AudioBufferSourceNode。 AudioBuffer。
关于javascript - 网络音频api完成播放后,会清除源节点吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55207924/