не очень корректный код, почему бы вам не написать класс? кажется, что с вашими переменными так не получается.
В любом случае, есть несколько способов решения этой проблемы.
проще всего заставить его работать с вашим кодом без рефакторинга:
http://jsfiddle.net/dimitar/fNfKk/2/
Идея состоит в том, чтобы иметь переменную области действия moving
, которая устанавливается через события onStart
и onComplete
анимации. слайды влево / вправо, затем проверьте, двигается ли, и если да, возвращайтесь без каких-либо действий
способ 2:
не переключайтесь между «текущей позицией, текущей позицией + шириной», так как именно это вызывает у вас проблемы в данный момент - если вы нажмете на него посередине, он потеряет «кадр» или ... фокус (то есть кадры не будут центрированы )
Вместо этого вычислите, сколько стоит каждый шаг, и сохраните глобальный scrollto var - тогда каждый предыдущий / следующий должен увеличивать / уменьшать scrolltoval и запускать анимацию движения, например, el.tween("left", scrollto);
. объедините это с link: 'cancel'
для вариантов анимации, и вы сможете быстро перейти к нетерпеливому.
удачи.