Как я могу воспроизвести мои запрограммированные аудио файлы в последовательности?
Я делаю говорящий бот атм. Но звуковые файлы обгоняют друг друга. Они играют одновременно. Я не могу справиться с этим. Как я могу сыграть их по порядку, когда один заканчивает, потом должен играть другой... Тогда мой бот может говорить... Можете ли вы дать мне пример кода, пожалуйста? Спасибо...
Вот мой код...
То, что я хочу, аудио должно сказать мне "Мех" или что-то в этом роде. Я хочу, чтобы это говорило...
Спасибо!
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form action="" method="post">
<input name="deger" type="text" value="">
<input type="submit">
</form>
<?php
$m="m";
$e="e";
$r="r";
$h="h";
$a="a";
$b="b";
if (strpos($_POST["deger"], $m) !== false) {
echo "<script>var birdSound = new Audio('m.wav');
birdSound.loop = false;
birdSound.play();
</script>";
}
//
if (strpos($_POST["deger"], $e) !== false) {
echo "<script>var birdSound = new Audio('e.wav');
birdSound.loop = false;
birdSound.play();
</script>";
}
//
if (strpos($_POST["deger"], $h) !== false) {
echo "<script>var birdSound = new Audio('h.wav');
birdSound.loop = false;
birdSound.play();
</script>";
}
?>
</body>
</html>
1 ответ
Решение
Это основная идея поставить игру в очередь: использовать событие "конец", чтобы узнать, когда закончился текущий звук.
var audioFiles= ["a.wav", "b.wav", "c.wav", ... ];
function playNext() {
if (audioFiles.length) {
var sound = new Audio(audioFiles.shift());
sound.addEventListener("ended", playNext);
}
}
playNext();