JavaScript Canvas requestAnimation вкладка "Замораживание кадров"

Я работал над 2D-игрой на JavaScript с использованием canvas, и я обнаружил, что requestAnimationFrame, кажется, делает игру намного более плавной, и это здорово. Однако с тех пор игра случайно зависала. Закладка застревает, и игра не выдает никаких ошибок, так что я немного растерялся. Я пробовал много вещей для ручной отладки, таких как постоянное обновление переменной LocalStorage, просто отображение в консоли и т. Д. Ничто не дает мне никаких результатов.

Я могу сказать, что мои эксперименты наводят меня на мысль, что может быть какое-то странное асинхронное поведение, связанное с requestAnimationFrame; а именно, я заметил, что если я изменяю размер чего-либо с помощью socket.on, например массива, и игра запускает цикл for для этого массива, иногда происходит сбой в середине цикла for, говоря, что Ссылка не определена, хотя я проверяю это прямо перед циклом for. Более того, я заметил, что когда requestAnimationFrame вызывает код, такой как моя функция Game.update(), иногда объект "this" неправильно ссылается на объект, в котором я нахожусь. То есть в Game.update(), this.draw_something() выдаст ошибку. Я исправил те проблемы, в которые верю, но мне интересно, есть ли у кого-нибудь понимание общего характера requestAnimationFrame.

Последнее, что я хочу упомянуть, это то, что, когда вкладка зависает, память начинает стремительно расти. Он быстро увеличивается от нескольких сотен мегабайт (от предварительно загруженного gfx и т. Д.) До 2 гигабайт и постоянно увеличивается.

Я надеюсь, что у кого-то есть хорошие отзывы - и спасибо заранее.

0 ответов

Другие вопросы по тегам