Javascript setTimeout函数上的精确定时
我需要在浏览器(手机和桌面)上重现一种类似动画的效果,这种效果只是将背景颜色从黑色改为白色的过程 计时很重要,因为短时间的黑色背景表示“0”,长时间表示“1”(类似于二进制莫尔斯电码)。该信息由屏幕前面的光传感器解释。传感器速度非常快,如果我们使用较低的频率,屏幕不会出现问题(假设最大刷新率为50Hz) 这是im使用的脚本:Javascript setTimeout函数上的精确定时,javascript,mobile,browser,Javascript,Mobile,Browser,我需要在浏览器(手机和桌面)上重现一种类似动画的效果,这种效果只是将背景颜色从黑色改为白色的过程 计时很重要,因为短时间的黑色背景表示“0”,长时间表示“1”(类似于二进制莫尔斯电码)。该信息由屏幕前面的光传感器解释。传感器速度非常快,如果我们使用较低的频率,屏幕不会出现问题(假设最大刷新率为50Hz) 这是im使用的脚本: var i = 0; var b0t = 100; var b1t = 3.5 * b0t; var wl = 100; function pulses (){
var i = 0;
var b0t = 100;
var b1t = 3.5 * b0t;
var wl = 100;
function pulses (){
bytes = "1001101010110101001000100";
bit = bytes[i];
i += 1;
document.body.style.backgroundColor = 'white';
document.body.style.color = 'white';
setTimeout(toblack, wl);
if(i <= bytes.length) {
if (bit == 1)
setTimeout(pulses, b1t + wl);
else
setTimeout(pulses, b0t + wl);
}
}
function toblack() {
document.body.style.backgroundColor = 'black';
document.body.style.color = 'black';
}
pulses ();
var i=0;
var b0t=100;
变量b1t=3.5*b0t;
var-wl=100;
功能脉冲(){
bytes=“10011010101101000100”;
位=字节[i];
i+=1;
document.body.style.backgroundColor='白色';
document.body.style.color='white';
设置超时(toblack,wl);
如果(i我唯一能建议您尝试的是,忘记sestTimeout并尝试Date()。getTime()它将给您一个微秒级的unix时间戳,您可以尝试查询该时间戳并实现您自己的设置超时…我不知道这是否可行,但您在尝试时没有任何损失
看看这里
这里有一些例子。我认为NaCl应用程序是最好的解决方案,因为你真的不想在同步单线程应用程序中依赖计时器(至少在我的经验中是这样)。Flash可能会起到作用,但正如你所说,IOS可能是一个问题。可能是canvas?…假设最大刷新率为50Hz…”这似乎是一个无效的假设,我使用过的大多数监视器至少都是60Hz,即使在英国,那里的电源是50。在JS中,有其他方法来计时事件,上面的链接,或者可能是使用setTimeout的一种可能的替代方法