问题的原因是因为AudioBufferSourceNode对象可以多次启动,但在不同的浏览器中具有不同的行为。实现一致性的最佳方法是始终创建新的AudioBufferSourceNode对象,而不是多次使用同一个。
以下是一个示例代码,在该示例中使用了一种简单的解决方法,即使用新的AudioBufferSourceNode对象来播放音频:
function playSound(buffer, context) {
let source = context.createBufferSource();
source.buffer = buffer;
source.connect(context.destination);
source.start(0);
}
在上述代码中,每次播放音频时都会使用新的AudioBufferSourceNode对象,以保证一致性。