Яков Гото
Искусственный Интеллект
(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?
Сейчас же очень сильно начинает все лагать при клике спустя некоторое время, картинка будто бы замораживается, я понятия не имею в чем может быть проблема. После обновления все нормально, но только первые 30 секунд. Странно что это только при клике, если ничего не нажимать все нормально.