Я хочу создать скрипт в 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();