THREE.js приостанавливает анимацию, когда не используется - PullRequest
0 голосов
/ 21 мая 2018

Я создаю свое приложение THREE.js с помощью React, и у меня есть два компонента: сцена с каруселью, созданная в THREE.js, и полноэкранная оверлейная сцена.Когда наложение отображается, я хочу приостановить сцену карусели, так как она вообще не видна.

В настоящее время я просто отменяю кадр анимации с помощью window.cancelAnimationFrame, но я замечаю пару фрагментов в Интернетечто люди, как правило, просто устанавливают переменную вроде stop в true, а затем внутри цикла update это будет примерно так:

update() {
  if (this.stop)
  this.renderer.render(this.scene, this.camera);
  this.frameId = window.requestAnimationFrame(this.update);
}

Мне было бы интересно, если бы у одного из них была лучшая производительностьчем другой?Как если бы отмена и перезапуск кадра анимации были более дорогостоящими, чем просто поддержание цикла анимации.

1 Ответ

0 голосов
/ 21 мая 2018

Очевидно, что использование cancelAnimationFrame будет иметь лучшую производительность, потому что вашему процессору не придется выполнять функцию и проверять this.stop 60 раз в секунду.Однако современные процессоры настолько мощны, что выполнение простого оператора if() несущественно, и разница в производительности будет крошечной.

Оба варианта решат вашу проблему, поэтому дать вам ответ скореевопрос мнения, выходящий за рамки переполнения стека.

...