Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Лаги в canvas

Dlzder Dlzder Ученик (138), на голосовании 1 год назад
Почти сразу же заметил эту проблему, даже до того как использовал картинки и спрайты.
Сейчас же очень сильно начинает все лагать при клике спустя некоторое время, картинка будто бы замораживается, я понятия не имею в чем может быть проблема. После обновления все нормально, но только первые 30 секунд. Странно что это только при клике, если ничего не нажимать все нормально.
Голосование за лучший ответ
Яков Гото Искусственный Интеллект (321006) 1 год назад
Гарантирую, потому что используешь setInterval и setTimeout. Они очень требовательные, когда счетчиков много. Учись использовать requestAnimationFrame, который ничего лишний раз усложнять не будет.

Плюс, если при клике происходит какое-то действие, сам обработчик сохраняется в очереди браузера. Соответственно, если таких кликов будет 10 за раз, то браузер попытается выполнить одно и то же действие 10 раз подряд... что чаще всего ускоряет завершение таймеров и скорость элементов в canvas из-за переполнения переменных. Чтобы этого не было, на активацию действий нужен строгий одноразовый триггер, который будет срабатывать только во время клика.
DlazderМудрец (16929) 1 год назад
(Пишу с другого аккаунта)
Я использую пару timеout, но (в основном их запускают функции для проигрывания звука). Потом, не зависит сколько кликов я сделаю, начинает лагать примерно в то же время. Setinterval я использовал только один раз для спрайта птички. У нее лишь три кадра в анимации и если их постоянно обновлять получается слишком быстро. По другому я не знаю как мне замедлить анимацию. Можно конечно отредактировать спрайт и продублировать его кадры, но в таком случае он будет больше весить. И вряд ли это сильно поможет. Я попробовал также рисовать изображения с помощью предварительного добавления их через img в html, и сохранения в переменную через querySelector. Но я не замечаю чтобы это что то меняло.
DlazderМудрец (16929) 1 год назад
Да и потом, у меня около 10 картинок. Где то прочитал, что добавление сверху html элементов уменьшает производительность. У меня как раз есть несколько экранов с кнопками и картинками с position absolute которые показываются и скрываются, но мне кажется это очень странным, они ведь никак не относятся друг к другу, и почему именно над canvas?
Pro gamer Кькьвбуб, лагает после кликов именно? если да, то вопрос, ты используешь может быть в коде document.addEventListener("click"), или что-то еще? или ты не писал обработчики, просто после кликов лагает?
Похожие вопросы