Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   При повторении несколько раз animate - рассинхрон... (https://javascript.ru/forum/jquery/38137-pri-povtorenii-neskolko-raz-animate-rassinkhron.html)

Petja 21.05.2013 06:14

При повторении несколько раз animate - рассинхрон...
 
У меня карусель, есть функция подвинуть на один влево или вправо.
Если надо несколько раз прокрутить картинки - то запускается функция несколько раз.

Внутри функции несколько $(selector).animate, его можно при полном выполнении запустить что-то следующее так:

$(selector).animate({right: '-500px'}, 500, function(){ // что-то сделать после выполнения... });

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

Подскажите, как такое можно организовать?

dmitriymar 21.05.2013 08:46

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

Petja 21.05.2013 12:54

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

Видимо кроме как рекурсии ничего не придумать...

Petja 21.05.2013 12:56

Дополнительная проблема в том, что анимации две отдельных:

imgCurr.css({'right':0,left:'auto'})
                .animate({right: -globs.imgWidth}, speed,function(){
                    imgCurr.removeClass('active');
                    globs.imgCurrLock = false;
                });
            $('#carousel img').eq(nextInd)
                .addClass('active')
                .css({'right': globs.imgWidth,'left':'auto'})
                .animate({right: 0}, speed, function(){
                    globs.imgNextOrPrevLock = false;
                });

Petja 21.05.2013 12:58

Можно ли как-то прослушивать постоянно глобальные переменные, чтобы при изменении одной и второй в false запустить функцию второй раз? Что-то вроде do..while? Не будет ли это слишком ресурсоемко?


Часовой пояс GMT +3, время: 07:01.