我想按 jquery 的顺序播放多个 mp3
我想在 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试使用 预加载 属性。
Try using the preload attribute.