Я разрабатываю игру, используя холст HTML5 и JavaScript. Исходные fps приличные, но по мере продолжения игры fps уменьшается. Исходный fps составляет около 45 кадров в секунду, но он уменьшает до 5 кадров в секунду.HTML5 Частота обновления игры с запросомAnimationFrame
Ниже мой gameloop
var last_draw = Date.now(); //To track when last time GameDraw was called last time
var fps;
function gameloop()
{
var elapsed = Date.now() - last_draw;
last_draw = Date.now()
fps = 1000/elapsed;
context.clearRect(0,0,canvas.height,canvas.width);// This function clears the canvas.
GameUpdate();// This function updates property of all game elements.
GameDraw(); //This function draws all visible game elements in the canvas.
window.requestAnimationFrame(gameloop); //Requests next frame
}
window.requestAnimationFrame(gameloop);
Он испытал это в следующих браузерах:
- Mozilla Firefox 32.0.3
- Google Chrome 38.0.2125.101 м
Мои вопросы::
- Почему rAF вызывает это реже, так как игра продолжается?
- Это из-за утечки памяти?
- Это потому, что время, затраченное GameDraw и GameUpdate, очень велико?
- Время выполнения функции Gamedraw отличается от времени, затраченного на фактическое рисование элементов в холсте. Gamedraw вызывает функцию draw для каждого игрового элемента.
Ваш код кодирования выглядит нормально. Мы не можем помочь вам найти точную проблему без дополнительной информации. Инструменты разработчика Chrome имеют отличные инструменты для проверки утечек памяти или профиля (измеряют скорость выполнения) различных функций. Я рекомендую бесплатный курс https://www.codeschool.com/courses/discover-devtools, чтобы узнать, как использовать эти инструменты. – Iftah
Спасибо, сэр за ваш ответ. Вы правы, я должен сначала изучить chrome devtools, чтобы устранить мою проблему. –