我们知道,当您在AudioBufferNode上调用#.stop()
时,您无法#.start()
。为什么这样做?
在使用WebAudio API时出现了这个问题,因为我们都会在尝试实现暂停功能时迟早发现。引起我兴趣的是,当然,我知道它是一个流,你不能简单地停下来"一条小溪。但它为什么会被摧毁?在内部,是否没有指向数据的指针,或者数据是否被简单地推送到目的地并被缓冲区遗忘?
答案 0 :(得分:2)
你没有在AudioBuffer上调用.stop(),你在BufferSourceNode上调用.stop() - 可以多次使用AudioBuffer。
简短版本是一种优化,允许以非常轻量级的方式对缓冲区进行即发即弃的播放 - 您可以围绕它构建更高级别的媒体播放器,但其本身就是BufferSourceNodes非常轻巧。声音数据本身不会被遗忘,并且可以重复使用 - 实际上,由其他BufferSourceNodes同时使用 - 因为它位于单独的AudioBuffer对象中。