4

html5<audio>要素に異なるスタイルを適用し、.mp3 ファイル形式をサポートしていないブラウザーにフラッシュ フォールバックを提供するこのプラグインを入手しました。私が遭遇した問題は、ある曲の再生を開始してから他の曲の再生をクリックすると、それらすべてが同時に再生され、ユーザー エクスペリエンスが悪いことです。

プラグインを編集して一度に 1 つの曲だけを再生する方法を見つけようとしていました。たとえば、ユーザーが 1 つの曲を聴いてから別の曲の再生をクリックすると、最初の曲は一時停止する必要があります。完全にはわかりませんが、次の行に沿って何かを編集する必要があると思います。

    playPause: function() {
      if (this.playing) this.pause();
      else this.play();
    },

ただし、プラグインには曲の再生と一時停止を処理しているように見えるさまざまな場所があるため、これが正確に正しい行であるかどうかはわかりません。私はまだjQueryに非常に慣れていないため、この大きなオーディオライブラリがどのように機能するかを完全に理解することはできません.コードコメントを読んでいますが、まだこれを理解することができません.

プラグインの完全なコードはこちらから入手できます: http://freshbeer.lv/mg/js/audio.min.jsプラグ

インの公式ウェブサイト: http://kolber.github.io/audiojs/

この問題については、いくつかのプレーヤーで [再生] をクリックするだけで、すべてのプレーヤーが同時に再生されることがわかります: http://freshbeer.lv/mg/index.html

4

1 に答える 1

7

addEventListener と play イベントを使用します。これにより、再生ボタンが押されたプレーヤーを除くすべてのプレーヤーが一時停止します。

        audiojs.events.ready(function () {
            var as = audiojs.createAll();

            $('audio').each(function () {
                var myAudio = this;
                this.addEventListener('play', function () {
                    $('audio').each(function () {
                        if (!(this === myAudio)) {
                            this.pause();
                        }
                    });
                });
            });
        });
于 2013-04-16T11:13:29.573 に答える