Замедление 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);
}

→ Ссылка