我需要在瀏覽器(手機和桌面)上重現類似動畫的效果,這種效果只是背景顏色從黑色到白色的程序變化。setTimeout函數精確定時
調光很重要,因爲短時間的黑色背景意味着「0」,而更長的時間意味着「1」(就像二元莫爾斯電碼)。該信息由屏幕前面的光傳感器解釋。傳感器速度非常快,如果我們使用較低的頻率,我們不會遇到屏幕問題(假設最大刷新頻率爲50Hz)。
這是使用腳本IM:
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();
而一個working demo(如果你受到任何癲癇綜合徵,不要打開)
的問題是,1出20瀏覽器一塌糊塗的計時,當然在傳感器方面,我有一個容忍範圍,一個非常寬容的範圍,但瀏覽器有時再次出現幾毫秒,這並不奇怪,如果您的手機電腦在後臺執行某些操作,性能的瀏覽器受到嚴重影響。
有沒有這方面的軟件解決方案?我正在考慮使用閃光燈更精確地進行閃爍,但我真的很喜歡我的應用程序可以從IOS訪問。或者我可以創建一個本地應用程序,肯定會比瀏覽器更精確,但是再次,我想知道我是否可以使其在瀏覽器上工作。
我認爲NaCl應用程序是最好的解決方案,因爲您真的不想依賴同步單線程應用程序中的計時器(至少在我的經驗中)。 Flash可能會訣竅,但正如你所說,IOS可能是一個問題。也許帆布? http://stackoverflow.com/questions/16253920/canvas-game-timer –
*「...假設最大刷新頻率爲50Hz ...」*這似乎是一個無效的假設,我用過的大多數顯示器都是至少* 60Hz,即使在英國,這裏的主電源是50. –
還有其他的方法來計時JS中的事件,上面的鏈接或[this](http://stackoverflow.com/questions/13939719/best-方法 - 創建時間敏感 - 瀏覽器 - 應用程序 - 桌面 - 高 - ti)可能是使用setTimeout的可能替代方案 – DBS