javascript - 在 for 循环中使用 switch case 播放音频太快

标签 javascript

我正在尝试通过循环数组并将数组拆分为每个数组来播放声音,然后使用 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/

相关文章:

javascript - jQuery - 在链接上创建元素

javascript - 如何导入只有 JSDoc 注释的 JavaScript 模块

javascript - 使用 javascript 将 Id 动态分配给 DOM 元素

javascript文本字段计数器显示

javascript - 如何检测移动设备是否被 Google Chrome 模拟?

javascript - 在自动更正的同时跟踪文本字段中光标位置的更好方法?

javascript - 立即调用 setTimeout

javascript - Python 的 NetworkX 库可以创建动画吗?他们的主页上有一个精美的动画

javascript - datepicker 或 popup 元素隐藏在 iframe 中

javascript - Javascript 中的正则表达式匹配返回原始字符串