我正在使用HTML5和JavaScript制作游戏。
我该如何通过JavaScript播放游戏音频?
我在播放音频方面遇到了一些问题,特别是自从 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 )
如果你在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
。
<audio>
元素。该元素将具有适当的JS钩子,用于'play','pause'等操作... - Marc B