gpt4 book ai didi

javascript - 防止多个 AudioContexts

转载 作者:行者123 更新时间:2023-11-30 10:19:40 26 4
gpt4 key购买 nike

我遵循一种模式使用 Webaudio 将声音附加到对象。它运行良好,但是,如果我在一个页面上生成多个项目并附加此脚本,我会收到一个 console.log,表明我已经超过了每页可用的 audioContexts 的最大数量。

我的理解是,该行声明 audioContext 附加到窗口的 AudioContext,而不是声明一个新的。如果它已经有一个 AudioContext 并简单地将音频节点添加到它的图形中,我该如何询问窗口?

var that = this
, audioContext = window.AudioContext || window.webkitAudioContext;

if (!audioContext) {
console.warn("Web Audio API not supported in this browser.");
return;
}

this.context = new audioContext();

最佳答案

我不确定我是否理解您的问题。为什么您不能只在脚本顶部创建一个音频上下文,然后让其余代码引用它?

无论如何,为了提供答案,您可以这样做:

var getContext = function() {
var ac = null;
if ( !window.AudioContext && !window.webkitAudioContext ) {
console.warn('Web Audio API not supported in this browser');
} else {
ac = new ( window.AudioContext || window.webkitAudioContext )();
}
return function() {
return ac;
};
}();

然后,每次需要上下文时,只需调用此函数即可:

var ctx = getContext(),
osc = ctx.createOscillator();
osc.connect(ctx.destination);

关于javascript - 防止多个 AudioContexts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21969078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com