根据当前号码逐个播放声音文件

时间:2016-03-17 09:52:46

标签: javascript php html5

我理解之前曾经问过类似的问题,但没有一个能回答我的问题。

我正在开发一个队列系统,客户从自助服务终端获取票证并等待计数器拨打他们的号码,例如1023.我有.mp3格式的每个号码的声音文件。顺便说一句,该项目是使用php开发的。

这两个要求是声音文件必须根据数字播放,例如,如果当前数字是1023,则需要播放1.mp3,然后播放0.mp3等。

另一个问题是这些文件需要在前一个结束后播放一次。我设法完成了第一部分,但声音一起播放。请帮助我,下面是我的第一部分代码。

soundmanager.inc

public function getSound($in_value)
{
    $value = $in_value;

    switch ($value){
    case "0":
        $path = "sounds/0.mp3";
        echo "<audio autoplay>";
        echo "<source src=".$path." >";
        echo "</audio>";
        break;
    case "1":
        $path = "sounds/1.mp3";
        echo "<audio autoplay>";
        echo "<source src=".$path." >";
        echo "</audio>";
        break;
    case "2":
        $path = "sounds/2.mp3";
        echo "<audio autoplay>";
        echo "<source src=".$path." >";
        echo "</audio>";
        break;
//and some more

getSound.php

$word = isset($_POST['no']) ? $_POST['no'] : '';
$array = str_split($word);
$one = $array[0];
$two = $array[1];
$three = $array[2];
$four = $array[3];

$um = SoundManager::getInstance();

$um->getSound($one);
$um->getSound($two);
$um->getSound($three);
$um->getSound($four);

2 个答案:

答案 0 :(得分:1)

你走了。

var audioFiles = ["http://www.magnac.com/sounds/onlyroadlarge.mp3", "http://www.magnac.com/sounds/paradiserowlarge.mp3", "http://www.magnac.com/sounds/lordslarge.mp3"];
var audio = document.createElement("audio");
var audioIdx = 0;
audio.addEventListener('ended', function () {
  audioIdx++;
  if (audioIdx >= audioFiles.length) audioIdx = 0;
  this.src = audioFiles[audioIdx];
  this.play();
});
audio.src = audioFiles[audioIdx];
audio.play();

答案 1 :(得分:0)

var i = 0;
var loop = setInterval(function() {
  var audio;
  switch (dispatch_units[i]) {
    case 'ST39':
      audio = new Audio('sounds/alert1.mp3');
      break;
    case 'ALS':
      audio = new Audio('sounds/monty_engine.mp3');
      break;
    case 'ST38':
      audio = new Audio('sounds/twotone.mp3');
      break;
  }
  audio.play();
  i++;
  if(i<=total_units) {
      clearInterval(loop);
  }
}, 5000);