Замедление resize
вопрос: Есть такая штука window.addEventListener('resize', resizeGame, false); и есть таймер который рисует канвас со скоростью 50. При изменении размера картинка начинает мигать, я так понимаю что resize срабатывает чаще, чем таймер, можно ли как-нибудь замедлить resize?
Ответы (1 шт):
Автор решения: OPTIMUS PRIME
→ Ссылка
let timeout = null;
window.addEventListener('resize', function() {
clearTimeout(timeout);
timeout = setTimeout(resizeGame, 500);
});
Картинка обновится только через полсекунды после прекращения resize.
По хорошему, можно в принципе всё в игре заморозить во время resize, примерно так:
let settings = {
resizingWindow: false,
};
/***/
let timeout = null;
window.addEventListener('resize', function() {
settings.resizingWindow = true;
clearTimeout(timeout);
timeout = setTimeout(function() {
settings.resizingWindow = false;
}, 500);
});
/***/
function mainAnimProcess() {
if( settings.resizingWindow ) {
setTimeout(function() {
requestAnimationFrame(mainAnimProcess);
}, 500);
// Прервать выполнение, отложить на полсекунды
return;
}
updateBoboCoors();
throwFireballs();
/* ляляля */
requestAnimationFrame(mainAnimProcess);
}