Chrome & Safari setInterval работает медленно (1 Гц и 2 Гц) на активной вкладке - PullRequest
0 голосов
/ 28 ноября 2011

Цель: создание анимации, обновленной с частотой 100 Гц.

Моя анимация обновляет свойство background-position.Текущее положение фона вычисляется функцией, которая должна запускаться 100 раз в секунду, чтобы создать иллюзию плавного движения.

Проблема: анимация не плавная в Chrome иСафари.

Он ведет себя так, как будто функция «обновленная позиция фона» запускается только один раз в секунду в Chrome и только два раза в секунду в Safari.

Дополнительная информация:

  • мой код работает нормально в Firefox 4 / Internet Explorer 8 и выше / Opera 11.10 (не тестировал предыдущие версии)
  • Я использую setInterval ( function () {// делать вещи здесь}, 10) для обновления моей анимации
  • Я знаю, как Chrome обрабатывает JS на неактивных вкладках - проблема возникаетна активная вкладка
  • Я использую jQuery 1.7

Я уверен, что в Safari / Chrome должен быть способ создания плавной анимации.Пожалуйста, помогите.

Редактировать: Я не могу использовать .animate (), потому что я отслеживаю движение мыши и вычисляю текущее положение фона в зависимости от того, где мышь указывает.Для этого я должен проверять положение мыши каждые 10 миллисекунд (и я должен использовать для этого setInterval).

1 Ответ

2 голосов
/ 28 ноября 2011

Поскольку вы не хотите анимировать и используете jQuery, почему вы устанавливаете setInterval в 10MS?В то время как jQuery имеет функцию .animate, которая будет обрабатывать анимацию?И эта функция имеет настройку Интервал , где вы можете установить FPS.

$(element).animate(
        {backgroundPosition:"(0 -250px)"}, 
        {duration:500})
    })

Подробнее о фоновой анимации: http://snook.ca/archives/javascript/jquery-bg-image-animations

...