gpt4 book ai didi

javascript - 音频标签,播放请求被新的加载请求中断

转载 作者:行者123 更新时间:2023-12-03 05:07:02 26 4
gpt4 key购买 nike

在我的贪吃蛇游戏中,我有一个播放 sfx 的音频标签。当吃到食物时,下面会播放“食物”声音。然后它会产生一种新食物,如果它的值(value)为 200 分,它会发出一种名为“食物 200”的声音。问题是,因为它立即生成,“Food200”音频将加载,而“Food”音频仍在播放/加载,从而出现此错误

if (Audio == "Food") {
var audio = document.getElementById('SFX');
audio.src = 'audio/Food.mp3';
audio.load();
audio.play();
}

if (Audio == "Food200") {
var audio = document.getElementById('SFX');
audio.src = 'audio/Food200.mp3';
audio.load();
audio.play();
}

我尝试过“$("SFX").remove();”在我的音频标签上,也尝试暂停它,但这不起作用,我仍然收到错误,有更好的方法吗?

最佳答案

如果您需要同时允许多种音效,我建议为每个音频文件制作一个音频标签,例如;

//Js
if (Audio === "Food") {
audioFood.play();
}

if (Audio === "Food200") {
audioFood200.play();
}

//HTML
<audio id="audioFood" src="./audio/Food.mp3"></audio>
<audio id="audioFood200" src="./audio/Food200.mp3"></audio>

如果您只想要一个音频标签,另一个选择是创建一个“超时”时间戳,每次播放音效时检查并更新;

var audioTimeout = +new Date(); // +new turns the date into a MS timestamp.

if (Audio === "Food") {

var dateNow = +new Date();
if(audioTimeout - dateNow > 0) return;
else audioTimeout = dateNow + (Food.mp3 length in MS);

var audio = document.getElementById('SFX');
audio.src = 'audio/Food.mp3';
audio.load();
audio.play();
}

关于javascript - 音频标签,播放请求被新的加载请求中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41969695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com