JavaScript依次播放HTML5音频

5

我有一个问题,需要从动态创建的 Javascript 音频对象中连续播放音频。这些音频文件来自谷歌,并存储在一个字符串数组中。

for (i = 0; i < Txt_array.length; i++) {
audio.src ='http://translate.google.com/translate_tts?&tl=en&q='+Txt_array[i];
audio.play();};

我希望通过事件监听器实现这个功能,或者有其他方法吗?这不仅仅是关于谷歌的,所以我想请您提供一个通用的解决方案,而不是一个现成的谷歌语音脚本。

你能帮我吗?我该如何让音频一个接一个地播放?

更新:

audio.src='http://translate.google.com/translate_tts?&tl=en&q=' + Txt_array[0];
audio.play();

audio.addEventListener('ended', function(){
for (i = 1; i < Txt_array.length; i++) {
audio.src ='http://translate.google.com/translate_tts?&tl=en&q='+Txt_array[i];
audio.play();};
}, false);

我添加了Eventlistener,我觉得它应该像这样工作,但是如果这是第一个播放的文件,那么Eventlistener无法触发。我希望进一步获得支持。提前感谢您。
1个回答

12

有一个ended事件,您可以在监听器中更改src属性。

var strings = "Hello how are you".split(" ");
var index = 1;

audio.src='http://translate.google.com/translate_tts?&tl=en&q=' + strings[0];
audio.play();

audio.onended = function() {
    if(index < strings.length){
        audio.src='http://translate.google.com/translate_tts?&tl=en&q=' + strings[index];
        audio.play();
        index++;
    }
};

非常感谢您的支持,先生。我认为更新版本应该可以工作,但实际上并没有。您有任何建议吗?提前感谢您。 - Owenir
你不能在 on ended 中循环播放音频。你必须在函数之外跟踪音频和索引,并在前一个音频结束后逐个加载它们。 - tachyonflux
非常感谢您,先生。这对我很有帮助。 - Owenir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接