0

Я смотрю на новых стандартов для requestAnimationFrame и cancelAnimationFrameНеобходимо ли отменять выдающийся запросAnimationFrame перед его повторным вызовом?

http://paulirish.com/2011/requestanimationframe-for-smart-animating/

и различные polyfills, представленная здесь:

https://gist.github.com/paulirish/1579671

семантика U Пойте эти функции немного сложно для меня. В частности, предположим, что вы requestAnimationFrame(callback) один раз. необходимо позвонить cancelAnimationFrame, если вы хотите, чтобы requestAnimationFrame(callback) во второй раз до того, как был вызван первый обратный вызов? Будет ли браузер повторно обращаться к обратным вызовам? Или браузер автоматически заменит двойные вызовы одним?

Я спрашиваю, потому что my current animation is really laggy on Firefox, и requestAnimationFrame, похоже, не слишком помогает. Но я могу назвать это слишком быстро из нескольких источников. Ответ на этот вопрос был бы велик.

+0

Предварительное тестирование, по-видимому, указывает на то, что отмена выдающихся запросов анимации перед заказом новых делает Firefox менее лагги. Этот эффект, вероятно, появится в любом браузере, где событие перерисовывания происходит медленнее, чем анимация. –

ответ

0

Per спецификации:

Примечание

requestAnimationFrame только графики одно обновление на основе сценариев анимации . Если необходимы последующие кадры анимации, , то requestAnimationFrame необходимо будет снова вызвать из обратный вызов.

Также обратите внимание, что несколько вызовов к requestAnimationFrame с тем же обратного вызова (до обратного вызова вызывается, и список очищается) будет результат в несколько записей, находящихся в списке с той же функции обратного вызова, и, таким образом, приведет к этой функции обратного вызова вызывается более одного раза для кадра анимации.

http://www.w3.org/TR/animation-timing/

Вызовы requestAnimationFrame будет планировать только один обратного вызова. После того как ваш обратный вызов был обработан, его запись в списке обратного вызова будет удалена. Таким образом, вам не нужно отменять предыдущие вызовы.

+0

Эта спецификация, по-видимому, указывает на то, что вам нужно отменить предыдущие запросы, если вы планируете запланировать два вызова (рисовать то же самое) для одного и того же кадра, что приведет к замедлению, которое я наблюдал. –

+0

Конечно, если вы делаете несколько вызовов в одном фрейме, вы просто теряете время. Простите, я не внимательно прочитал вопрос. Я не понимал, что вы задавали вопрос в контексте только одного кадра. –

Смежные вопросы