我一直试图通过一个文本列表并播放等效的字母声音文件。代码播放字符串中的最后一个文件,但确实循环每个元素(尝试使用警告框)。我试图为每个字母播放声音剪辑,我尝试使用setTimeout来延迟for循环的检测,但没有成功。有没有人对此有任何见解?我也使用jquery和html5网页。
function playSound(msg) {
var sound_file_url = "snd/" + msg + ".wav" ;
$('#sound').html("<embed src='"+sound_file_url+"' hidden=true autostart=true loop=false>");
alert("Text: " + msg );
}
function startPoint() {
var input = $("#text").val();
for (var i = 0, j = input.length; i < j; i++) {
if(input[i].match(/^[a-zA-Z0-9]+/) ){
setTimeout(playSound(input[i]), 500);
}
}
};
Long Time Lurker,第一次海报。感谢所有看过的人。
答案 0 :(得分:2)
您不会保存上下文,因为它始终是最后一个值。尝试以下代码。你也马上打电话给playSound
。
function playSound(msg) {
console.log("Text: " + msg );
}
function startPoint() {
var input = $("#text").val(), i = 0, j = input.length;
function repeat(){
if(i == j ) return;
if(input[i].match(/^[a-zA-Z0-9]+/) ){
playSound( input[i]);
}
setTimeout(repeat, 500);
i++;
}
repeat();
};
答案 1 :(得分:0)
我认为这是因为变量'i'。
你可以尝试这种模式来保持变量'i';
(函数(newI){
playSound(newI);
})(ⅰ);
此外,
还有一件事是某些浏览器仅支持HTML5 Audio API的一个音频通道。