2014-01-30 4 views
1

Я делаю простую игру, и у меня проблема, когда после минимизации окна в течение нескольких секунд, по возвращении игра проходит в два раза больше частоты кадров, а еще больше после этого добавляет 60 каждый раз. Мой игровой цикл выглядит так:requestAnimationFrame call на более чем 60FPS

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

Как с обновлением, так и с ничьей, не включая requestAnimationFrame. Я пробовал это как на firefox, так и на хроме с теми же результатами. Есть идеи, почему это происходит? Я использовал этот метод много раз, и это первый случай, когда это когда-либо случалось.

EDIT: вы можете найти скрипку в http://jsfiddle.net/5ttGs/ Это действительно просто, поскольку этот вид остановил мой прогресс. Нажмите его пару раз и наслаждайтесь геймплеем 10000 + FPS

+0

Вы можете произвести уменьшенный тестовый пример на [jsfiddle] (HTTP: // WWW. jsfiddle.net) или [jsbin] (http://www.jsbin.com) (или общедоступная ссылка)? – Barney

+0

Есть ли пример, демонстрирующий эту проблему? –

+0

попробуйте с глобальной var animation = requestAnimationFrame (disp) .. в анимации цикла = requestAnimationFrame (disp). это должно гарантировать, что вы выполните его только один раз. – cocco

ответ

0

Исправлена ​​ошибка с помощью cocco. В основном событие onclick, называемое функцией disp, каждый раз при нажатии холста. Поскольку функция disp имела в ней кадр requestAnimationFrame, он назывался его в два раза больше, каждый раз, что приводило к притоку кадров. Для того чтобы исправить я просто избавился от ИЗОБ в canvas.addEventListener

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

Вы можете найти результат здесь: http://jsfiddle.net/5ttGs/