js requestAnimationFrame

參考
requestAnimationFrame簡介
requestAnimationFrame,Web中寫動畫的另一種選擇
CSS3動畫那么強祠汇,requestAnimationFrame還有毛線用盖袭?

當我們寫window.requestAnimationFrame(回調(diào)函數(shù))時失暂,瀏覽器會在下次重繪前執(zhí)行回調(diào)函數(shù)。我們可以用它來做連貫的逐幀動畫鳄虱。例如:

function render(){
     // 一些更新界面的操作
     requestAnimationFrame(render);
}

render();

在沒有requestAnimationFrame方法之前弟塞,我們只能用setTimeout或setInterval來實現(xiàn)類似的效果

function render(){
     // 一些更新界面的操作
    setTimeout(render, 1000/60);// 一般瀏覽器是每秒60幀
}

render();

這樣寫的存在的問題是:如果瀏覽器不是每秒60幀,會造成掉幀拙已。還有决记,在性能方面,大部分在瀏覽器在標簽頁/窗口處于的時候非激活狀態(tài)(如窗口最小化或標簽頁切換了)時倍踪,requestAnimationFrame是不會被執(zhí)行的系宫,而setTimeout/setInterval 會。

以下參考CSS3動畫那么強建车,requestAnimationFrame還有毛線用扩借?

國慶北京高速,最多每16.7s通過一輛車缤至,結(jié)果潮罪,突然插入一批setTimeout的軍車,強行要10s通過领斥。顯然嫉到,這是超負荷的,要想順利進行月洛,只能讓第三輛車直接消失(正如顯示繪制第三幀的丟失)何恶。然,這是不現(xiàn)實的膊存,于是就有了會堵車导而!

同樣的忱叭,顯示器16.7ms刷新間隔之前發(fā)生了其他繪制請求(setTimeout)隔崎,導致所有第三幀丟失,繼而導致動畫斷續(xù)顯示(堵車的感覺)韵丑,這就是過度繪制帶來的問題爵卒。不僅如此,這種計時器頻率的降低也會對電池使用壽命造成負面影響撵彻,并會降低其他應用的性能钓株。

這也是為何setTimeout的定時器值推薦最小使用16.7ms的原因(16.7 = 1000 / 60, 即每秒60幀)实牡。

而我requestAnimationFrame就是為了這個而出現(xiàn)的。我所做的事情很簡單轴合,跟著瀏覽器的繪制走创坞,如果瀏覽設(shè)備繪制間隔是16.7ms,那我就這個間隔繪制受葛;如果瀏覽設(shè)備繪制間隔是10ms, 我就10ms繪制题涨。這樣就不會存在過度繪制的問題,動畫不會掉幀总滩,自然流暢的說~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纲堵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闰渔,更是在濱河造成了極大的恐慌席函,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冈涧,死亡現(xiàn)場離奇詭異茂附,居然都是意外死亡,警方通過查閱死者的電腦和手機炕舵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門何之,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咽筋,你說我怎么就攤上這事溶推。” “怎么了奸攻?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵蒜危,是天一觀的道長。 經(jīng)常有香客問我睹耐,道長辐赞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任硝训,我火速辦了婚禮响委,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窖梁。我一直安慰自己赘风,他們只是感情好,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布纵刘。 她就那樣靜靜地躺著邀窃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪假哎。 梳的紋絲不亂的頭發(fā)上瞬捕,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天鞍历,我揣著相機與錄音,去河邊找鬼肪虎。 笑死劣砍,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的扇救。 我是一名探鬼主播秆剪,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼爵政!你這毒婦竟也來了仅讽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钾挟,失蹤者是張志新(化名)和其女友劉穎洁灵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掺出,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡徽千,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了汤锨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片双抽。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖闲礼,靈堂內(nèi)的尸體忽然破棺而出牍汹,到底是詐尸還是另有隱情,我是刑警寧澤柬泽,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布慎菲,位于F島的核電站,受9級特大地震影響锨并,放射性物質(zhì)發(fā)生泄漏露该。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一第煮、第九天 我趴在偏房一處隱蔽的房頂上張望解幼。 院中可真熱鬧,春花似錦包警、人聲如沸撵摆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽台汇。三九已至苛骨,卻和暖如春篱瞎,著一層夾襖步出監(jiān)牢的瞬間苟呐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工俐筋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牵素,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓澄者,卻偏偏與公主長得像笆呆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粱挡,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 從JS執(zhí)行機制說起 瀏覽器(或者說JS引擎)執(zhí)行JS的機制是基于事件循環(huán)赠幕。 由于JS是單線程,所以同一時間只能執(zhí)行...
    love2013閱讀 876評論 0 1
  • window.requestAnimationFrame() 方法告訴瀏覽器您希望執(zhí)行動畫询筏,并請求瀏覽器調(diào)用指定的...
    壯哉我大前端閱讀 1,289評論 0 0
  • 看了很多視頻榕堰、文章,最后卻通通忘記了嫌套,別人的知識依舊是別人的逆屡,自己卻什么都沒獲得。此系列文章旨在加深自己的印象踱讨,因...
    DCbryant閱讀 725評論 0 2
  • 最近在研究頁面渲染及web動畫的性能問題魏蔗,以及拜讀《CSS SECRET》(CSS揭秘)這本大作。 本文主要想談?wù)?..
    諾奕閱讀 1,101評論 0 11
  • 當我們要在頁面上實現(xiàn)一些動畫效果的時候,通常會考慮兩種方式: 1帚稠、通過css3的animation+keyfram...
    點融黑幫閱讀 1,292評論 0 28