すべてのオーディオファイルを、各オーディオ間の時間間隔で順番に再生しようとしています。今、私は最初のオーディオを再生することができますが、もう一度再生ボタンをクリックして2番目のオーディオを再生する必要があります。終了関数はこれを処理する必要がありますか?あなたの優しさとお手伝いを感謝します。機能が終了していても、オーディオのシーケンスを連続して再生することはできません
var playList = [{
"duration": 1000,
"value": "0_silence"
}, {
"duration": 4000,
"value": "1_hello"
}, {
"duration": 6000,
"value": "2_how_old"
}];
$(document).ready(function() {
var audioElement = document.createElement('audio');
var i = 0;
$("#play").on("click", function(){
audioElement.addEventListener("ended", playAudio(playList));
function playAudio() {
if(i < playList.length) {
audioElement.setAttribute('src', 'sound/' + playList[i].value + '.wav');
setTimeout(function(){audioElement.play(); playAudio, playList[i].duration;});
i++;
} else {
i = 0;
}
}
});
// playAudio(playList);
// });
//
// function playAudio() {
// var audioElement = document.createElement('audio');
// audioElement.addEventListener("ended", playAudio(playList));
// if (i < playList.length) {
//
// var audioElement = document.createElement('audio');
// audioElement.addEventListener("ended", playAudio(playList));
// audioElement.setAttribute('src', 'sound/' + playList[i].value + '.wav');
// audioElement.play();
// setTimeout(playAudio, playList[i].duration);
// i++;
// } else {
// i = 0; // reset i to zero to start over if button clicked again
// }
// }
}
あなたは、単一のオーディオのonendedを聞いている:私は、ランダムな短いサンプルを使用して、ここで(私は
playAudio()
機能を共有するためにそれを再配線)プレイボタンから除き、上記の修正を包ん複数の要素を作成します。最初のメンバーだけがこのリスナーを持ちます。これを避けるには、常に同じaudioElementを使用できます。また、クリックイベントにイベントハンドラを添付しないでください。 – Kaiido@Kaiido返信ありがとうございます。だから、私はクリックイベントの外にオーディオ要素を持つべきではないという意味ですか?もしそうなら、私のaudioElementは定義されません。それとも、clickイベント内にaudioElementを定義する必要があるのですか?イベントハンドラを添付する必要があります。これを行うには他の方法がありますか? – Johnny
複数の '