如何播放每个 X 声音的音频?在javascript中

Posted

技术标签:

【中文标题】如何播放每个 X 声音的音频?在javascript中【英文标题】:How to play audio every X sound? in javascript 【发布时间】:2014-10-11 20:04:38 【问题描述】:

我尝试这样做,但它不起作用

javascript

<script>
document.getElementById('player').play();
x = document.one.numberO.value;
i = 0;
x2 = document.one.intervalO.value;
function out()
    if ((document.one.numberO.value == "")||(document.one.numberO.value < 1)||(document.one.intervalO.value < 5)||(document.one.intervalO.value == ""))
    
        alert("error");
    
    else
var intervalID = setInterval(start, x2*1000);
 i++;
 if (i == x)
 
     clearInterval(intervalID);
 
 


function start()
 document.getElementById('player').play();

还有 html

<form name="one">
    Number <br />
    <input type="text" name="numberO"><br />
    <br />
    Interval <br />
    <input type="text" name="intervalO">
</form> 
<audio id="player" src="too.mp3"></audio>   
<div>   
    <button onclick="out();">Start</button>
    <button onclick="document.getElementById('player').pause()">||</button>
    <br>
    <br>
    <button onclick="document.getElementById('player').volume+=0.1"> +</button>
    <button onclick="document.getElementById('player').volume-=0.1"> -</button>
</div> 

我需要每 X 秒播放一次声音(我从文本字段中获取值)X2 次(也从文本字段中获取)

【问题讨论】:

你想如果有人在 x 字段中输入 10,那么声音应该运行 10 秒还是每 10 秒后运行一次?? 【参考方案1】:

给你 :) 希望对你有帮助。

function out() 
  x = document.getElementById('a').value;
 intrvl = setInterval("sound(x)", x*1000);

i = 0;
function sound(x) 

  if(x == i)
    
      clearInterval(intrvl);
    
  i++;
  
 document.getElementById('player').play();
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
<input type="text" id="a">
  <input type="button" value="sec" id="s" onclick="out()">
  
<audio id="player" src="http://www.soundjay.com/button/beep-01a.mp3"></audio> 
  
</body>
</html>

【讨论】:

【参考方案2】:
var audioPlayer = document.getElementById("player");
var audioPlayCount = parseInt(document.one.numberO.value);
var audioseconds = parseInt(document.one.intervalO.value);

var start = function()

    audioPlayer.play();
;

var out = function()

    if(!audioPlayCount || !audioSeconds || audioSeconds < 5 )
    
        alert("error");
        return;
    

    for(var i = 0; i < audioPlayCount; i++)
    
        setTimeout(start, 1000 * audioSeconds);
    
;

我没有测试过这段代码,但你明白了。

【讨论】:

parseInt 中添加, 10。而且你的 for 循环对i 也没有任何作用。此外,应使用函数声明而不是函数表达式。

以上是关于如何播放每个 X 声音的音频?在javascript中的主要内容,如果未能解决你的问题,请参考以下文章

如何停止播放 HTML5 音频

在完成播放之前再次单击播放音频文件

如何播放特定频率和框架的声音未找到音频单元问题

CCSprite 带有图像文件和声音文件

如何在 Windows 上使用 C++ 在特定音频设备上播放声音?

如何将音频播放器的音量控制与本地通知的声音联系起来?