【发布时间】:2018-02-05 00:52:46
【问题描述】:
我正在尝试处理与设置 gainNode.gain.value 相关的 WebAudio API 已弃用的 Chrome 功能。我目前的代码是这样的:
var source = ctx.createBufferSource();
var my_gain = -1; //or 1, depending on whether I want sound or not
source.gainNode.gain.value = Math.min(1.0, Math.max(-1.0, gain));
然而,这给我带来了一条错误消息:“[Deprecation] GainNode.gain.value setter 平滑已被弃用,并将在 2018 年 1 月左右在 M64 中删除。如果需要平滑,请改用 setTargetAtTime()。请参阅 @ 987654321@了解更多详情”
要让错误消息消失,我可以这样做:
source.gainNode.gain.setTargetAtTime(0, ctx.currentTime, 0.015);
但是如何将my_gain 变量合并到其中?
【问题讨论】:
-
我不确定,但我认为您不应该为这条消息而烦恼。当您阅读他们提供的链接时,他们只会谈论他们所拥有的隐藏的未指定行为,他们将删除这些行为。但我不认为您期望在自己的代码中使用此功能,而是您只想立即设置 gainNode 的值,而不需要任何斜坡。而且我不相信你的做法有任何错误,而是 Chrome 的信息有点过于冗长。此外,最终,您将使用
setValueAtTime(your_value, ctx.currentTime)来做同样的事情。 -
我同意,Chrome 的消息很冗长。现在,如果我什么都不做,代码仍然有效。问题是,如果我曾经使用过
setValueAtTime(my_value, ctx.currentTime),我不确定要在my_value中插入什么。从我上面的原始示例中插入my_gain不起作用... -
my_value这是您设置为source.gainNode.gain.value的结果,即Math.min(1.0, Math.max(-1.0, gain)) -
嗯,只是尝试实现这一点,但是当
my_value为-1 时(即,当我希望关闭声音时),音频仍在全音量播放。我做错了什么? -
(换句话说:
var gain_value = Math.min(1.0, Math.max(-1.0, my_gain)); source.gainNode.gain.setTargetAtTime(gain_value, ctx.currentTime, 0.015);似乎不起作用...