2014-01-30 34 views
1

我做一個簡單的遊戲,我有其中最小化窗口的幾秒鐘,在返回後,遊戲運行在兩倍幀率,之後更是一個問題,增加60次。我的遊戲循環如下所示:requestAnimationFrame調用超過60FPS

function disp(){ 
update(); 
draw(); 
requestAnimationFrame(disp); 
} 
requestAnimationFrame(disp); 

同時更新和繪製不包括requestAnimationFrame。我已經在firefox和chrome上嘗試了這一點,獲得了相同的結果。任何想法爲什麼發生這種情況?我用了同樣的方法很多次,這是第一次發生這種情況。

編輯:你可以在http://jsfiddle.net/5ttGs/ 找到它的一個小提琴它非常簡單,只要這種有點暫停我的進步。點擊它幾次,並享受10000 + FPS遊戲

+0

你能出示有關[的jsfiddle(HTTP減少的測試用例:// WWW。 jsfiddle.net)或[jsbin](http://www.jsbin.com)(或可公開訪問的鏈接)? – Barney

+0

有沒有證明這個問題的例子? –

+0

嘗試使用全局變量animation = requestAnimationFrame(disp)..在循環動畫= requestAnimationFrame(disp)中。這應該確保您只執行一次。 – cocco

回答

0

解決了與cocco的幫助下的問題。每次點擊畫布時,基本上onclick事件都會調用disp函數。因爲disp函數中有一個​​幀,所以它每秒鐘調用它兩次,導致幀的涌入。爲了解決我只是在 canvas.addEventListener

function mouse_up() { 
var matches = 0; 
var overlap = 69; 
mouse.up = false; 
console.log("clicked", mouse.x,mouse.y); 
disp(); 
} 

擺脫了DISP,你可以在這裏找到結果:http://jsfiddle.net/5ttGs/