2013-01-11 73 views
0

我構建了一個頁面,用戶可以在幾秒鐘內輸入一個值,然後ping會以該間隔發聲。我還組合了一個計時器,它應該與ping時間間隔同步。就像他們輸入5 - 時鐘應該運行超過5,10,15等等。當ping發聲時。由於我無法弄清楚的原因,聲音似乎不能與時鐘同步,並且它在運行時間越長越差。謝謝你的幫助!jQuery定時器和聲音不同步

$(document).ready(function() { 

    $('#set_ping').click(function() { 
    interval = parseInt($('#ping_val').val()*1000,10); 
    $('#ping_alert').text('The ping will sound every ' + interval/1000 + ' seconds.'); 
    }); 

    $('#go').click(function() { 
    timer(); 
    setInterval(sound, interval); 

    }); 

    function sound() { 
    $('#audio').append('<embed src="assets/audio/sound88.mp3" autostart="true" hidden="true" loop="false">');  
    } 

    var seconds = 0; 
    function timer() {setInterval(function() { 
    $('#progress').text(seconds++/100); 
    }, 10); 
} 
}); 
+1

爲什麼不直接嵌入它,不要設置自動播放,將其設置爲預加載,並調用它來使用JavaScript進行播放。每次都會添加元素。 – epascarello

回答

0

從波紋管使用代碼:

$(document).ready(function() { 
var interval; 
    $('#set_ping').click(function() { 
    interval = parseInt($('#ping_val').val()*1000,10); 
    $('#ping_alert').text('The ping will sound every ' + interval/1000 + ' seconds.'); 
    }); 

    $('#go').click(function() { 
    timer(); 
    setInterval(sound, interval); 

    }); 

    function sound() { 
    $('#audio').append('<embed src="assets/audio/sound88.mp3" autostart="true"  hidden="true" loop="false">');  
    } 

    var seconds = 0; 
    function timer() {setInterval(function() { 
    $('#progress').text(seconds++/100); 
    if(seconds % interval == 0){ 
     // play music here 
    } 
    }, 10); 
} 
}); 

在該代碼中,當代碼更新的時間也檢查時間(你seconds變量)如果與interval變量的多個持有間隔中間人聲音的時間。 注意interval是全局變量