2017-02-10 11 views
3

私は現在、非常に簡単に統合できる簡単なAudioJsスクリプトを使用していますが、同じページに複数のオーディオファイルがある場合、何かをして、前のファイルを最初に停止する必要なく聞いて...基本的に私は "すべてを停止する"と言うトグルが必要ですAudioJS:1ページあたりの時間でhtml5オーディオのみ再生

これを実装する方法についての任意のヘルプ?

ような機能のための一般的なトリックは、すべての上onplayイベントをバインドすることですAudioJs

+0

'document'のすべてのオーディオノードで' .pause() 'を呼び出してみましたか?あなたが質問で試した 'javascript'? – guest271314

+0

AudioJSで作成したインスタンスごとに再生= falseを設定することができないため、Jqueryをそれぞれ試してみましたが、それらを停止できますが、AudioJS命令と競合します。 – Francesco

+0

'AudioJS'を試していません。ライブラリは 'AudioContext'を使ってメディアを再生しますか? – guest271314

答えて

0

によって作成された各インスタンスの「演奏」私は

$.each($('audio'), function() { 
     this.pause(); 
    }); 

を試みたが、これはボタンと状態を反転させませんプレーヤー;あなたが1つをプレイすると、今度はonplayがトリガーされたプレーヤー以外のすべてのプレーヤーを一時停止させますが、audiojsはそのラッパーオブジェクトでオーディオイベントを提供しません(再生、一時停止などのメソッドを提供します)あなたができることです:各プレーヤーオブジェクトは対応するHTML5 <audio>要素への参照を持ちます(これは実際にmp3を再生しています)。これを使用して直接elementプロパティを使用してバインドできます。すべてのプレイヤーに

1.bind onplay

allAud = a.createAll(); 
for(var i=0; i<allAud.length;i++) 
{ 
    allAud[i].element.onplay = function pauseOthers(); 
} 

たら、2. onplayは、すべてのプレイヤーの<audio>上でループをトリガーとイベントがpause()方法

function pauseOthers() { 
    for(var j=0; j<allAud.length;j++) 
    { 
     if(allAud[j].element != this) //pause all except the one being played 
     allAud[j].pause(); // can also use `this.pause()` , but better let audiojs do that incase it's handling some play/pause animation 
    } 
} 
ラッパーaudiojsを使用して(トリガーされた以外のすべての一時停止

デモ:http://jsfiddle.net/rqsxxjmd/

関連する問題