2

テキストのリストを調べて、同等の文字サウンド ファイルを再生しようとしています。コードは文字列の最後のファイルを再生しますが、すべての要素をループします (アラート ボックスで試行)。文字ごとにサウンド クリップを再生しようとしています。setTimeout を使用して for ループの計測を遅らせようとしましたが、成功しませんでした。誰かがこれについて何か洞察を持っていますか? また、html5 Webページで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);            

})(私);

また、

もう 1 つの問題は、ブラウザによっては、HTML5 Audio API のオーディオ チャネルが 1 つしかサポートされていないことです。

于 2012-10-25T15:19:20.300 に答える