Javascript间歇性地与音频文件行为不端

时间:2015-02-16 20:07:50

标签: javascript html5-audio

我有一个脚本,允许我点击一个div来开始给定偏移的音频轨道(因此充当提示)。我在页面中有几个这样的div。在某些情况下,他们只会按顺序进行比赛。在其他情况下,偏移被误解。例如,当我有这个div:

    <script>
    var status = 'S' ;
    function pausecomp(ms) {
        ms += new Date().getTime();
        while (new Date() < ms){}
    }

    function play_it( aud_id ) {
        if ( status == 'S' ) {
            var offset = $("#"+aud_id+"_offset")[0].value ;
            if ( offset > $("#" + aud_id )[0].duration ) { alert ( "offset beyond end of track" ); return; }
            $("#" + aud_id)[0].currentTime = offset ;
            $("#" + aud_id)[0].volume = 1 ;
            $("#" + aud_id)[0].play() ;
            status = 'P' ;
            $("#"+aud_id+"_div").css('backgroundColor', 'cyan') ;
        } else if ( status == 'P' ) {
            $("#"+aud_id+"_div").css('backgroundColor', 'green') ;
            status = 'F' ;
            fadeout( aud_id ) ;
            stop( aud_id );
            status = 'S' ;
        } else if ( status == 'F' ) {
            stop( aud_id ) ;
            status = 'S' ;
        }
    }

    function fadeout(aud_id) {
    // reduce the volume by .01 every 100 ms
        var volume = $("#" + aud_id)[0].volume ;
        var stop = 100 ;
        if ( volume > 0 ) {
            stop = Math.floor( 100*volume ) ;
        }
        for ( var i = 1 ; i < stop ; i++ ) {
            reduceVol($("#" + aud_id)[0]);
            pausecomp(60) ;
        }
        $("#" + aud_id)[0].volume = 0 ;
    }

    function reduceVol(audio_obj) {
        var volume = audio_obj.volume ;
        volume = volume - 0.01 ;
        if ( volume >= 0 ) {
            audio_obj.volume = volume ;
        }
    }

    function stop(aud_id) {
        $("#" + aud_id)[0].pause() ;
    }
    </script>   

<div style='display:inline-block; width:300px;'>
<audio id="my_audio_3">
    <source src="Artists\The Black Keys\El Camino\01.Lonely Boy.mp3" type="audio/mpeg">
</audio>
<input type='hidden' id='my_audio_3_offset' value='185.5' />
<div id='my_audio_3_div' style='background-color:lightblue; width:200px; height:100px; border:1px solid black; vertical-align:middle; text-align:center;' onclick="play_it('my_audio_3')">Artists\The Black Keys\El Camino\01.Lonely Boy.    
</div>
<button type="button" style='width:200px;' onclick="stop('my_audio_3')">Stop</button>
</div>

在文件本身中,偏移正常工作。如果我和一堆类似的div一起使用它,它根本不会播放。在其他组合中,(似乎它与某些文件有关,但我无法缩小其中的原因),有些在点击时可以正常播放,有些只在首先播放之前播放的文件中播放。 / p>

0 个答案:

没有答案