我想开始淡出,但是可以取消它并从当前的音量级别淡入。
首先,我尝试了这一点:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT :
glTranslatef(-1.0,0,0.0)
if event.key == pygame.K_RIGHT :
glTranslatef(1.0,0,0.0)
if event.key == pygame.K_UP :
glTranslatef(0.0,0,-1.0)
if event.key == pygame.K_DOWN :
glTranslatef(0.0,0,1.0)
(fiddle)
在Firefox或Chrome中均不起作用。淡出开始,然后当超时功能触发时,增益值仅跳回到1。
然后我发现此版本可在Chrome中使用:
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中,因为它返回的是增益的最后一个设置值,而不是计算所得的值(即1),因此它从1转换为1,因此结果与我的第一次尝试相同
所以这些让我想到了问题...
答案 0 :(得分:1)
我认为您需要“ cancelAndHoldAtTime()”(https://webaudio.github.io/web-audio-api/#dom-audioparam-cancelandholdattime)。不幸的是,尚未在Firefox中实现。