1

こんにちは、オーディオ ファイルを特定の回数、つまり 4 回ループする必要があります。サウンド ファイルを正しくループさせます。コードは次のとおりです。? 4x 後にループを停止する方法、どうもありがとう P

$('#play_audio').click(function () {
            var audio = document.createElement("audio");
            audio.src = "files/windows%20default.mp3";

            audio.addEventListener('ended', function () {
                // Wait 500 milliseconds before next loop

                setTimeout(function () { audio.play(); }, 500);
            }, false);           

            audio.play(); 
    });
4

5 に答える 5

4

私はこのようにそれを行うことができました:

 $('#play_audio').click(function () {                     
            var times = 4;
            var loop = setInterval(repeat, 500);

        function repeat() {
            times--;
            if (times === 0) {
                clearInterval(loop);
            }

            var audio = document.createElement("audio");
            audio.src = "files/windows%20default.mp3";

            audio.play();
        }

        repeat();           
    });      
}); 
于 2013-03-15T07:04:31.920 に答える
2

おそらく、それを行うためのより良い方法は、HTML を同じに保つことです。特定のIDでターゲットにするだけです。

<audio id="loop-limited" controls>
    <source src="music.ogg" type="audio/ogg">
    <source src="music.mp3" type="audio/mpeg">
</audio> 

JavaScript は次のとおりです。

// Audio Loop Limit
var loopLimit = 4;
var loopCounter = 0;
document.getElementById('loop-limited').addEventListener('ended', function(){
    if (loopCounter < loopLimit){
        this.currentTime = 0;
        this.play();
        loopCounter++;
    }
}, false);   
于 2015-11-25T07:38:13.563 に答える
1

最近、同様の状況が発生し、次のようなコードで解決しました。

var ringsToPlay = 4;
var sound = new Audio('http://www.oneoakway.com/_inactive/oldfiles/chimebang.mp3');
var currentRing = 0;

function doIt() {
    sound.volume = .4;
    sound.play();
    currentRing = 1;
    sound.addEventListener('ended', ringMore, false);
}

function ringMore() {
    if(currentRing == ringsToPlay) {
        sound.removeEventListener('ended', ringMore, false);
    } else {
        sound.play();
        currentRing++;
    }
}

私は最新のブラウザ用にしかコーディングしていないことに注意してください。これが古いブラウザで機能するかどうかはわかりませんが、おそらく機能しないでしょう。FF、Chrome、IE、最新バージョン、Windows 7 でのみコードをテストします。

フィドル: http://jsfiddle.net/fidnut/2oL5fsxz/1/

于 2014-12-15T15:39:05.670 に答える
1

if次のようなカウンターを含む簡単なステートメントを挿入します。

更新しました:

$('#play_audio').click(function () {
            var audio = document.createElement("audio");
            audio.src = "files/windows%20default.mp3";

            audio.addEventListener('ended', function () {

                var repeat = 0;

                // Wait 500 milliseconds before next loop  
                setTimeout(function () {
                      if repeat < 3 {
                           var repeat = repeat + 1;
                           audio.play();
                      }
                      else {
                           return done;                
                      }
                }, 500);

            }, false);

      audio.play();
});

2 番目の更新:

$('#play_audio').click(function () {
        var audio = document.createElement("audio");
        audio.src = "files/windows%20default.mp3";        

        delay(500).audio.play();
        delay(1000).audio.play();
        delay(1500).audio.play();
        delay(2000).audio.play();
});

プログラミングの観点からはスケーラブルではありませんが、この 1 つの問題を今回だけ解決しようとしている場合は、実行可能な回避策です。

もっと時間があれば、ループコードを機能させることができるかもしれませんが、これを試して、うまくいくかどうか教えてください。

于 2013-03-15T01:22:31.880 に答える
0

彼らがあなたのページをロードするときに彼らを怖がらせるだけです.しかし、ありがとう、私はこれを行う方法を探していました.

$(document).ready(function () {
    var times = Math.floor((Math.random() * 5) + 1);
    var loop = setInterval(repeat, 500);

    function repeat() {
        times--;
        if (times === 0) {
            clearInterval(loop);
        }

        var audio = document.createElement("audio");
        audio.src = "http://static1.grsites.com/archive/sounds/birds/birds001.wav";

        audio.play();
    }

    repeat();
});

https://jsfiddle.net/qmcw0cqq/

于 2015-10-05T22:04:38.207 に答える