2014-04-08 31 views
0

所以我看了幾百個線程。我放棄了gifs,因爲它們如何跨瀏覽器支持得不好(默認最小fps爲4-10,具體取決於瀏覽器,並且在加載時沒有重置gif或播放)。所以我決定用一個使用javascript的動畫設備來玩一些樂趣。我注意到Safari在我之前做過的一件事情上吸取了fps,但從未想過太多,因爲我認爲我做錯了一些事情......的setInterval ... ... requestAnimFrame工作requestAnimationFrame..nothing在Safari哎呀

因此,我使用setIntervals使這個網站最小化了總數,clearIntervaled他們使用他們設置的變量,甚至試圖不把它們聲明爲全局變量......即

<script> 
    var bob =setInterval("fps();",100); 
    var going=0; 

     fps(){ 
      if(going<10){ 
       ++going; 
       document.getElementById('id').style.top=(1+going)+'px'; 
       document.getElementById("id").src="./elements/pic"+going+".png"; 
      } 

     else{ 
      clearInterval(bob); 
     } 
</script> 

在IE上運行完美,但safari決定100 = 1秒??我查了很多網站,有人抱怨沒有迴應,或者人們說Safari和Chrome有更好的fps。所以我重做第一reduing活躍setIntervals總數整個事情,然後把它轉換過來......

requestAnimFrame 

然後到...

requestAnimationFrame 

,但畢竟它仍然勉強在Safari上移動。我喜歡它是如何運行的IE瀏覽器,和我的身影,下一步是使一切乘以僅是它是在Safari瀏覽器中的因變量...但我有可能無法正常工作或者是感覺,因爲也許它只是一個記憶問題,這很糟糕,因爲據我所知,setInterval比requestAnimationFrame運行的頻率低,所以它似乎是一個更好的選擇。

在這裏我可以把我的代碼,但它是一個有點多,我盤算了一下,具體的代碼可能不太重要,但網頁是craibwoud.com。我有它在setInterval的版本,現在當我調整了代碼,但應該Safari瀏覽器友好的版本是Craibwoud.com/safari

哦,我從來沒有得到的

cancelAnimationFrame/cancelRequestAnimationFrame 

工作,所以我不得不

if(value){function();} 

出來使用VAL = false如果我需要結束他們。

很抱歉,如果我的編碼是有點基本的,但我有點新的。

編輯:這裏是代碼中的一個樣本:

function bgfx(){ 
counter+=.1; 

var trans=Math.round(counter); 

if (counter > 7){ 
    counter= 1; 


} 

document.getElementById("fx").src='./elements/bdfl'+trans+".png"; 

if(fxy_v){window.requestAnimationFrame(bgfx);} 

else{document.getElementById('fx').src='./elements/bdoff.png';} 

}

它是利用所謂的...

fxy_v=true; 
fxy = bgfx(); 
+0

剛安裝新的操作系統,它似乎是工作(在setInterval的版本),但不包括這似乎是一個小故障當點擊某個按鈕時,與setTimeout相關的速度比requestAnimationFrame快。另外奇怪的是,requestAnimationFrame版本正在工作,但仍然沒有達到應有的速度。 – user3509285

+0

任何人都可以幫忙嗎?我已閱讀了requestanimationframe上的大多數帖子,沒有任何幫助。我把我的setinterval頁面作爲主頁面備份,因爲請求要差得多。 – user3509285

回答

0

Safari瀏覽器實現了它作爲webkitRequestAnimationFrame最初。看看這個填充工具:https://gist.github.com/paulirish/1579671

此外,還要確保它適用於您的版本的Safari:在Mac http://caniuse.com/requestanimationframe

+0

很遺憾,我以前曾多次查看該鏈接。我認爲他使用了window.requestAnimationFrame與其他人使用的requestAnimationFrame。我會嘗試添加,看看是否有幫助。但有一個問題是,所有討論它的地方都在逐幀處理精靈或生成的動畫,甚至只是簡單地移動div。 – user3509285

+0

你的回答沒有幫助。我甚至在我之前沒有用過的頁面底部鏈接鏈接。 – user3509285