2

我一直在尝试浏览文本列表并播放等效的字母声音文件。该代码播放字符串中的最后一个文件,但会循环遍历每个元素(尝试使用警告框)。我试图为每个字母播放声音剪辑,我尝试使用 setTimeout 来延迟 for 循环的检测,但没有成功。有人对此有任何见解吗?我也使用带有 html5 网页的 jquery。

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);
        }
    }
};

长期潜伏者,第一次海报。感谢所有偷看的人。

4

2 回答 2

2

您没有保存上下文,因为它将始终是最后一个 i 值。尝试以下代码。你也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();
};​
于 2012-10-24T17:22:46.867 回答
0

我认为这是因为变量'i'。

您可以尝试使用这种模式来保留变量“i”;

(函数(newI){

playSound(newI);            

})(一世);

还,

另一件事是某些浏览器仅支持 HTML5 音频 API 的一种音频通道。

于 2012-10-25T15:19:20.300 回答