我想按 jquery 的顺序播放多个 mp3

发布于 2024-12-12 19:20:28 字数 1845 浏览 3 评论 0原文

我想在 javascript/jquery 创建一个脚本,在后台播放/说出某个单词的字母。

当我调用函数 playWord();它拼出 div 中单词的字母。

例如,“帮助”一词。它应该拼写:“h”“e”“l”“p”。每个字母都有一个 .mp3 文件。

在拼写下一个字母之前,必须等到该字母完全拼写为止。

这是我到目前为止所拥有的,但它不正确。有时字母之间的时间间隔约为 5 秒。

<script type='text/javascript'>

var letterCounter = 0;
//the letter speed in ms
var spellAudioSpeed = 1000;

function playWord(){
    letterCounter = 0;
    //the word from the div
    playLetters($('#transWord').text().toLowerCase());
}

function playLetters(pWord){
    if(letterCounter < pWord.length){

        var letter = pWord.charAt(letterCounter);
        //create an new audio element
        var audioElement = document.createElement('audio');

        if(letter == ' '){
            audioElement.setAttribute('src', 'Letters/spatie.mp3');
        } else if(letter == '\''){
            audioElement.setAttribute('src', 'Letters/aanhalingsteken.mp3');
        } else if(letter == '\\"'){
            audioElement.setAttribute('src', 'Letters/dubbeleaanhalingsteken.mp3');
        } else if(letter == '/'){
            audioElement.setAttribute('src', 'Letters/schuinestreep.mp3');
        } else if(letter == '\\'){
            audioElement.setAttribute('src', 'Letters/schuinestreepachteruit.mp3');
        } else {
            audioElement.setAttribute('src', 'Letters/'+letter+'.mp3');
        }

        //couldnt find a better way to determine the duration.. ???
        audioElement.addEventListener('durationchange', function() {
            audioElement.play();
            letterCounter++;
            timeOut = setTimeout(function(){playLetters(pWord)},
            spellAudioSpeed + (audioElement.duration * 1000));
        }, true);

    } else if (letterCounter == pWord.length){
        //do stuff
        alert("finished");
    }
}

playWord();

I want to create a script in javascript/jquery that play's/speaks the letters of a certain word in the background.

when i call the function playWord(); It spells out the letters of a word in a div.

For example, the word 'help'. It should spell: 'h' 'e' 'l' 'p'. Each letter has an .mp3 file.

Before the next letter spells, it has to wait untill the letter is fully spelled.

This is what i have so far, but its not properly. Sometimes the time in between letters is like 5 seconds.

<script type='text/javascript'>

var letterCounter = 0;
//the letter speed in ms
var spellAudioSpeed = 1000;

function playWord(){
    letterCounter = 0;
    //the word from the div
    playLetters($('#transWord').text().toLowerCase());
}

function playLetters(pWord){
    if(letterCounter < pWord.length){

        var letter = pWord.charAt(letterCounter);
        //create an new audio element
        var audioElement = document.createElement('audio');

        if(letter == ' '){
            audioElement.setAttribute('src', 'Letters/spatie.mp3');
        } else if(letter == '\''){
            audioElement.setAttribute('src', 'Letters/aanhalingsteken.mp3');
        } else if(letter == '\\"'){
            audioElement.setAttribute('src', 'Letters/dubbeleaanhalingsteken.mp3');
        } else if(letter == '/'){
            audioElement.setAttribute('src', 'Letters/schuinestreep.mp3');
        } else if(letter == '\\'){
            audioElement.setAttribute('src', 'Letters/schuinestreepachteruit.mp3');
        } else {
            audioElement.setAttribute('src', 'Letters/'+letter+'.mp3');
        }

        //couldnt find a better way to determine the duration.. ???
        audioElement.addEventListener('durationchange', function() {
            audioElement.play();
            letterCounter++;
            timeOut = setTimeout(function(){playLetters(pWord)},
            spellAudioSpeed + (audioElement.duration * 1000));
        }, true);

    } else if (letterCounter == pWord.length){
        //do stuff
        alert("finished");
    }
}

playWord();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

指尖上得阳光 2024-12-19 19:20:28

尝试使用 预加载 属性。

Try using the preload attribute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文