【问题标题】:JavaScript play audio one after another HTML5JavaScript 一个接一个地播放音频 HTML5
【发布时间】:2015-02-06 10:57:32
【问题描述】:

我在从一个又一个动态创建的 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,我想它应该像这样工作,但我仍然有一个问题,如果这是第一个播放的文件,Eentlistener 不会触发,对吧?

我很乐意得到进一步的支持。

提前谢谢你。

【问题讨论】:

    标签: javascript html audio addeventlistener


    【解决方案1】:

    有一个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++;
        }
    };
    

    【讨论】:

    • 非常感谢先生的支持。我认为更新的版本应该可以工作,但事实并非如此。你对我有什么建议吗?提前谢谢你。
    • 您无法循环播放 on end 中的音频。您必须在函数之外跟踪音频和索引,并在前一个结束后一一加载。
    • 非常感谢先生,这对我有帮助。
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多