如何播放音频?

991

我正在使用HTML5和JavaScript制作游戏。

我该如何通过JavaScript播放游戏音频?


13
由于这是HTML5,所以有<audio>元素。该元素将具有适当的JS钩子,用于'play','pause'等操作... - Marc B
17
我敢打赌你正在想知道所有音频方法的文档在哪里:https://dev59.com/T2455IYBdhLWcg3wAvRI - Bryan Downing
22个回答

0

我在播放音频方面遇到了一些问题,特别是自从 Chrome 更新以后,用户必须先与文档进行交互。

然而,我几乎在所有的解决方案中发现,JS 代码必须积极地设置监听器(例如按钮点击)来接收用户事件以播放音频。

在我的案例中,我只想让我的游戏在玩家与之交互时立即播放背景音乐,所以我自己创建了一个简单的监听器,不断检查网页是否被交互。

const stopAttempt = setInterval(() => {
    const audio = new Audio('your_audio_url_or_file_name.mp3');
    const playPromise = audio.play();
    if (playPromise) {
      playPromise.then(() => {
        clearInterval(stopAttempt)
      }).catch(e=>{
        console.log('' + e);
      })
    }
}, 100 )

-1

如果你在2020年看到以下错误,这里有一个解决方案:

[Error] Unhandled Promise Rejection: NotSupportedError: The operation is not supported. (anonymous function) rejectPromise play (anonymous function) (testaudio.html:96) dispatch (jquery-3.4.1.min.js:2:42577)


<div onclick="new Audio('/assets/test.mp3').play()">aaa</div>

别聪明了,别以为那是老派的 oclick,我只需要把它移到页面下方到我的 jQuery 或者外部 JavaScript 文件中就行了。不对。它必须是一个 onclick


1
这段代码在点击事件之外完美运行。它只需要用户先与页面进行交互。 - mousetail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接