javascript - 在 HTML5 WebAudio 中如何知道声音是否停止或播放完毕?

标签 javascript html events web-audio-api

我正在尝试使用 Web Audio API 创建一个非常简单的音乐播放器。其中一项要求是当一首轨道完成时,下一首轨道自动开始的功能。

目前我正在订阅“已结束”事件。类似的东西

nodeSource.onEnded = function () {}
nodeSource.start(0, offset, duration);

问题来自于“onending”在两种情况下被触发:

  • 声音播放完毕(正是需要的)
  • 有人实际上停止了声音(根本不需要)

我需要一种方法来区分这两种情况。目前我无法找到声音缓冲区内当前位置的值,因此我可以将其与声音应该结束的时间进行比较。

我知道可以在播放开始时创建一个单独的计时器,然后在停止之前检查声音是否仍在播放,但这是一种非常奇怪的方法。

有没有办法通过网络音频本身获得我需要的东西?或者,也许还有其他不那么奇怪的方式?

最佳答案

如果有人停止了声音,你的程序一定知道这一点并停止了声音。在真正停止声音之前,请删除 onished 处理程序。

关于javascript - 在 HTML5 WebAudio 中如何知道声音是否停止或播放完毕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37333245/

相关文章:

events - 处理树面板 Extjs 4 上的 itemclick 事件

javascript - 单击全部展开/折叠时指向正确方向的箭头

javascript - 如何禁用 DocuSign 基于浏览器的地理位置弹出对话框

javascript - 如何生成具有不同颜色行的 React 表?

javascript - HTA:尝试将各种输入框和文本区域写入文本文件并复制到剪贴板

html - 占据页面剩余高度的可滚动 div

c# - 私有(private)EventHandler和私有(private)事件EventHandler的区别?

c++ - C++ 中的 EventEmitter 类 : Listener and Emitter

java - 使用 gmail 上下文小工具访问附件

javascript - 如何使用 jquery/javascript 过滤列表