>

안녕하세요 오디오 파일을 특정 횟수만큼 반복해야합니다. 즉, 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(); 
    });

  • 답변 # 1

    다음과 같이 처리했습니다 :

    $('#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();           
        });      
    });
    
    

  • 답변 # 2

    아마도 더 좋은 방법은 HTML을 동일하게 유지하는 것입니다. 특정 ID로 타겟팅하십시오.

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

    자바 스크립트입니다 :

    // 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);  
    
    

  • 답변 # 3

    간단한 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();
    });
    
    

    두 번째 업데이트 :

    $('#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();
    });
    
    

    프로그래밍 관점에서 확장 할 수는 없지만이 문제를 한 번만 해결하려는 경우 실행 가능한 해결 방법입니다.

    시간이 더 있으면 대화를 할 수 있을지 모르겠지만 아마도 루프 코드를 작동시킬 수도 있지만 시도해보고 트릭을 수행하는지 알려주십시오.

  • 답변 # 4

    최근에 비슷한 상황이 있었고 다음과 같은 코드로 해결했습니다.

    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에서만 코드를 테스트합니다.

    Fidlle : http://jsfiddle.net/fidnut/2oL5fsxz/1/

  • 답변 # 5

    페이지를로드 할 때 겁을 먹습니다 ... 하지만 감사합니다.이 방법을 찾고있었습니다.

    $(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/

관련 자료

  • 이전 파이썬의 최대 함수가 잘못된 결과를 반환
  • 다음 파이썬에서 메뉴를 만드는 데 도움이 필요합니다