我想开始淡出,但随后能够取消它并从当前音量级别淡入。
首先我尝试了这个:
gainNode.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 5);
setTimeout(function(){
gainNode.gain.cancelScheduledValues(audioCtx.currentTime);
gainNode.gain.exponentialRampToValueAtTime(1, audioCtx.currentTime + 5);
}, 3000);
(Qazxswpoi)
这在Firefox或Chrome中都不起作用。淡出开始,然后当超时功能触发时,增益值只会跳回到1。
然后我发现这个适用于Chrome:
fiddle
(Qazxswpoi)
...但不是在Firefox中,因为它返回增益的最后设定值而不是计算值,即1,因此它从1转换为1,因此结果与我的第一次尝试相同。
所以这些给我留下了问题......
我想你想要“cancelAndHoldAtTime()”(gainNode.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 5);
setTimeout(function(){
const val = gainNode.gain.value;
gainNode.gain.cancelScheduledValues(audioCtx.currentTime);
gainNode.gain.setValueAtTime(val, audioCtx.currentTime);
gainNode.gain.exponentialRampToValueAtTime(1, audioCtx.currentTime + 5);
}, 3000);
)。不幸的是,还没有在Firefox中实现。