我正在尝试通过循环数组并将数组拆分为每个数组来播放声音,然后使用 switch case 来检测数组中的内容。 函数守护者(){
number2 = get.num;
sNumber = number2.toString();
output = [];
for ( i = 0, len = sNumber.length; i < len; i ++) {
output.push(+sNumber.charAt(i));
console.log(output);
switch (output[i]){
case 0:
console.log('0');
audio0 = new Audio('logo/Q0.wav');
audio0.play();
break;
case 1:
console.log('1');
audio1 = new Audio('logo/Q1.wav');
audio1.play();
break;
case 2:
console.log('2');
audio2 = new Audio('logo/Q2.wav');
audio2.play();
break;
case 3:
console.log('3');
audio3 = new Audio('logo/Q3.wav');
audio3.play();
break;
case 4:
console.log('4');
audio4 = new Audio('logo/Q4.wav');
audio4.play();
break;
case 5:
console.log('5');
audio5 = new Audio('logo/Q5.wav');
audio5.play();
break;
}
}}
它的功能很好用,但显然它播放的声音太快了。有解决办法吗?
最佳答案
我假设你想听到一个接一个的声音?
这样不行。
假设数组中的第一个数字是:0。
所以声音 0 被播放。
但是,由于您遍历数组,并且到达下一个数字,例如。 2: 之后立即播放声音 2。
在开始下一个 play() 之前,循环不会等待第一个声音结束。
您可以做的是修改循环以等待音频结束事件。
例如:
var audio0 = document.getElementById("myAudio");
audio0.onended = function() {
alert("The audio has ended");
};
关于javascript - 在 for 循环中使用 switch case 播放音频太快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49348413/