【发布时间】:2018-09-05 02:20:53
【问题描述】:
我想开始淡出,然后可以取消它并从当前音量水平淡入。
首先我尝试了这个:
gainNode.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 5);
setTimeout(function(){
gainNode.gain.cancelScheduledValues(audioCtx.currentTime);
gainNode.gain.exponentialRampToValueAtTime(1, audioCtx.currentTime + 5);
}, 3000);
(fiddle)
这在 Firefox 或 Chrome 中都不起作用。淡出开始,然后当超时功能触发时,增益值会跳回 1。
然后我发现这个在 Chrome 中可以工作:
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);
(fiddle)
...但不是在 Firefox 中,因为它返回增益的最后设置值而不是计算的值,即 1,因此它从 1 转换为 1,因此结果与我第一次尝试的结果相同.
所以这些给我留下了问题......
- 我的上一个解决方案规范是兼容的还是只是一个 Chrome 错误?
- 是否有针对该问题的跨浏览器(至少 Firefox + Chrome)解决方案?
- 是否有针对规范兼容问题的跨浏览器解决方案?
【问题讨论】:
标签: javascript html5-audio web-audio-api