所以我看了幾百個線程。我放棄了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();
剛安裝新的操作系統,它似乎是工作(在setInterval的版本),但不包括這似乎是一個小故障當點擊某個按鈕時,與setTimeout相關的速度比requestAnimationFrame快。另外奇怪的是,requestAnimationFrame版本正在工作,但仍然沒有達到應有的速度。 – user3509285
任何人都可以幫忙嗎?我已閱讀了requestanimationframe上的大多數帖子,沒有任何幫助。我把我的setinterval頁面作爲主頁面備份,因爲請求要差得多。 – user3509285