2010-10-20 2 views
2

вопрос jQuery. У меня есть анимированный .block, перемещающийся вправо на 5000 пикселей.Как замедлить и остановить текущую анимацию jQuery?

$(".block").animate({"left": "+=5000px"}, 2000, 'linear'); 

Что мне нужно медленно остановить эту анимацию после щелчка:

('#clickme').click(function() { 
// ... stop $(".block") animation, not immediately, but with some easing 
}); 

Возможно ли это с JQuery? Любые предложения будут оценены.

ответ

2

Вы можете немедленно остановить анимацию с функцией .stop():

http://api.jquery.com/stop/

Это делает жесткий упор, однако. Если вы будете анимировать, это будет довольно крутая остановка.

+0

Я пытался остановить(), а затем начать новую анимацию с + = 100 парами , Но это не работает гладко. – Todd

2

Я бы занялся этим, остановив анимацию, когда пользователь нажимает триггер остановки, а затем запускает новую анимацию, которая дает иллюзию ослабленной остановки. Вот пример: http://jsfiddle.net/brianflanagan/BsQvh/ Трюк настраивает настройки второй анимации, поэтому все работает гладко. Вы захотите выйти замуж за продолжительность и расстояние, чтобы он сочетался с темпом первоначальной анимации.

0

Я знаю, что это старое, но вот как бы я это сделать:

var stopping = false; 
var lastNow = 0; 
$(".block").animate({left:"+=5000px"}, { 
    step: function(now){ 
     if (stopping) { 
      var delta = lastNow - now; 
      $(this).stop().animate({ left : "+=" delta * 2 }, 1000, "easeInOutQuad"); 
      stopping = false; 
     } 
     lastNow = now; 
    }}); 

Для остановки установите stopping в true

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