2016-08-11 14 views
1

ボタンをクリックするたびに再生したいオーディオファイルの配列があります。このボタンをクリックすると、配列内の次のオーディオファイルが再生されます。また、ユーザーが再度クリックしたときにオーディオが現在再生されている場合は、現在のトラックがリセットされ、次の曲が再生されます。オーディオファイルの配列を再生する

私は現在持っているアレイを循環できない理由を理解しようとしています。

var song1 = $("#sound-1"); 
var song2 = $("#sound-2"); 
var song3 = $("#sound-3"); 
var song4 = $("#sound-4"); 
var song5 = $("#sound-5"); 
var song6 = $("#sound-6"); 
var song7 = $("#sound-7"); 
var song8 = $("#sound-8"); 

var audioArray = [ song1, song2, song3, song4, song5, song6, song7, song8 ]; 


$(".click").click(function(){ 
    var i=0; 
     if (i< audioArray.length){ 
     audioArray[i].trigger('play'); 
     i++; 
     } else if (i>audioArray.length){ 
     i = 0; 
     audioArray[i].trigger('play'); 
     }; 
}); 

答えて

0

更新答:あなたはネイティブHTML5のインタフェースを使用しているので

、同様にトリガすることができpauseイベントがあります。残念ながら、時刻をリセットするイベントはstopではありませんが、currentTimeプロパティを使用して手動で0に設定することができます。

var i=0; 
var lastPlayedFile = null; 
$(".click").click(function(){ 
    if(lastPlayedFile !== null) { 
    lastPlayedFile[0].currentTime = 0; // [0] because we need a native DOM element, not a jQuery-wrapped one 
    lastPlayedFile.trigger('pause'); 
    } 
    if (i< audioArray.length){ 
    lastPlayedFile = audioArray[i]; 
    audioArray[i].trigger('play'); 
    i++; 
    } else if (i>=audioArray.length){ // there was a missing '=' in this condition to work properly 
    i = 0; 
    lastPlayedFile = audioArray[0]; 
    audioArray[i].trigger('play'); 
    }; 
}); 

オリジナルの答え:clickハンドラ外i

移動宣言。

var i=0; 
$(".click").click(function(){ 
    if (i< audioArray.length){ 
    audioArray[i].trigger('play'); 
    i++; 
    } else if (i>audioArray.length){ 
    i = 0; 
    audioArray[i].trigger('play'); 
    }; 
}); 

あなたは0にそれが価値だユーザーがボタンをクリックするたびにリセットされました。

+0

クール、うん、私は反復がオフだったが、正確に何かを見ることができませんでした。ありがとう!しかし、どのように私は現在の再生オーディオファイルを停止するアプローチので、1つだけのオーディオファイルが再生されますか?クリックするたびに、元のオーディオファイルを停止してリセットすることなく、新しいオーディオファイルを再生し続けます。 –

+0

@PeterLum、答えを更新しました。 –

+0

あなたの助けをありがとう。私は現在、DOM操作のためのjqueryでhtml5ネイティブオーディオを利用しています。イテレーションは、すべてのクリックがアレイの次の曲をトリガーするように機能しますが、曲は予期したとおりに停止してリセットされません。コンソールにはエラーが記録されていないので、オーディオを停止してリセットする別の方法があると、私は不思議です。 –

関連する問題