2013-01-11 43 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是全局变量