Как я могу взаимодействовать с анимационной очередью jQuery?- JQuery - PullRequest
2 голосов
/ 19 июля 2010

Как я могу взаимодействовать с очередью анимации jQuery?

Я хотел бы иметь возможность использовать анимацию, как если бы это был какой-то фильм, позволяющий мне перематывать назад, перемотка вперед или даже воспроизведение анимации с определенного относительного времени.


Я понимаю, может ли это быть слишком сложным для достижения, но для меня это стоит спросить и выяснить.Было бы очень интересно узнать, возможно ли это.:)


Есть идеи?=)

1 Ответ

3 голосов
/ 19 июля 2010

Короче говоря, нет реальной поддержки для этого.

Причина в том, как это работает, это простая (ну, как можно более простая) только вперед модель:
.animate() делается через setInterval() для большинства вещей ( см. Источник здесь ). В большинстве случаев это упрощенный расчет, нам нужно перейти от значения x к значению y за n миллисекунд. Таймер для jQuery происходит каждые 13 мсек, каждая анимация обновляется (перемещается на шаг) каждые 13 мс. Он делит ( длительность / общее время ) и вызывает шаг обновления для элемента, чтобы установить его значение стиля для этого шага .

Вы не можете "перемотать вперед" на самом деле, так как вам придется настраивать свойства, которые не отображаются после запуска анимации. Вы можете пропустить до конца (через .stop(boo, true)) любую анимацию или .queue() и .dequeue(), если необходимо ... или даже запутаться с очередью напрямую, на $.data(element,'fxqueue'), но это все. Что касается перемотки ... ну, анимации очищены ( с помощью .dequeue() move ), так что это тоже вышло (кроме интервальных вычислений, которые все смотрят в будущее).

Так что нет, нет способа сделать это, по крайней мере, с помощью встроенной системы анимации. Это не значит, что это невозможно, скорее, код, уже написанный в ядре jQuery, не сильно вам здесь поможет.

...