Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Web音频API:如何在没有故障的情况下计划外暂停?_Javascript_Audio_Web Audio Api - Fatal编程技术网

Javascript Web音频API:如何在没有故障的情况下计划外暂停?

Javascript Web音频API:如何在没有故障的情况下计划外暂停?,javascript,audio,web-audio-api,Javascript,Audio,Web Audio Api,我正在为我的下一个项目查看Web音频API,我对缺少播放/暂停感到困惑 我需要以下功能:用户可以单击“暂停”,声音在N秒内消失。淡出后,声音暂停。如果在淡出过程中单击“播放”,则声音会在后面淡出,并且从不暂停 我能找到的唯一解决方案是以下内容,但我不确定它是否能防止出现故障。“点击播放”后的步骤是否保证足够快?还有,有没有更简单的方法 当前播放源时,连接到增益节点和输出节点 使用(t,o)=(上次启动声音时,偏移量为) 和end=0 单击暂停, end:=(o+N)%soundDuratio

我正在为我的下一个项目查看Web音频API,我对缺少播放/暂停感到困惑

我需要以下功能:用户可以单击“暂停”,声音在
N
秒内消失。淡出后,声音暂停。如果在淡出过程中单击“播放”,则声音会在后面淡出,并且从不暂停

我能找到的唯一解决方案是以下内容,但我不确定它是否能防止出现故障。“点击播放”后的步骤是否保证足够快?还有,有没有更简单的方法

当前播放
时,连接到
增益
节点和
输出
节点

使用
(t,o)
=(上次启动声音时,偏移量为) 和
end
=0

  • 单击暂停,
    • end:=(o+N)%soundDuration
    • 在时间
      currentTime+N
    • 将增益设置为渐弱
  • 点击播放,
    • 如果仍然淡出:
      (t,o):=(currentTime,o+(currentTime-t))
    • 否则:
      (t,o):=(当前时间,结束)
    • 在偏移量
      o处启动
      source2
    • source2
      连接到
      gain
      output
    • 将增益设置为fadein
    • 断开
      与其
      增益
      输出的连接
    • source:=source2
编辑 交换节点时避免出现故障的一种方法:

  • 不要将
    与其
    增益
    输出
    节点断开连接
  • source2
    连接到相同的2个节点
  • 计划
    source
    在1ms内停止,并
    source2
    在1ms内开始偏移
    (o+(currentTime-t)+1ms)
  • 如果出于GC目的需要,请安排在以后断开

  • 我不明白你为什么要断开节点?另外,你可能对它感兴趣,而且可能没有必要!我现在对API不太了解,所以可能
    stop()
    足够让
    source
    稍后被GC'ed。您提到的函数将用于连接到
    增益
    节点的
    参数
    节点,但我认为这与我的问题无关。