Задержка слайдов плагина цикла jQuery до тех пор, пока не будет завершено onBefore

Я пробовал все, что мог придумать, но я не могу отложить слайд плагина jQuery Cycle до тех пор, пока анимация в моем onBefore не будет завершена. Я пробовал использовать delay() и setTimeout() с циклом ('toggle'). У кого-нибудь есть идеи о том, как отложить следующий слайд, пока все в onBefore не будет завершено?

$('#feature').cycle({ 
  fx:     'scrollLeft', 
  easing: 'easeOutExpo', 
  speed: 1000,  
  timeout: 3000,
  before:  onBefore
});

function onBefore(curr, next, opts, forwardFlag) { 
  $(curr).children("div").animate({  left : '960px' }, 300, function() {  });
}

person jdehlin    schedule 13.12.2011    source источник


Ответы (1)


Кажется, нет способа отложить переход слайда до завершения onBefore. В качестве обходного пути я смог сделать то, что мне нужно, со следующим, по существу описав, что произойдет до того, как следующий слайд перейдет в onAfter текущего слайда.

/* Вручную описываем анимацию для первого */

$('#feature .featureStory:first').children("a").delay(4500).animate({marginTop:'100'}, 500);

/* Передаем цикл вызова 'after' и 'skipInitializationCallbacks' */

$('#feature').cycle({ 
  fx: 'scrollLeft', 
  easing: "easeOutExpo",
  speed: 1000,
  timeout: 6000,
  after: onAfter,
  skipInitializationCallbacks: true
});

/* Делайте все ваши анимации для следующего слайда в onAfter текущего слайда */

function onAfter(curr, next, opts, ff) {
  $(next).children(".featureStory").animate({left:'560px'}, 500, function(){ 
    $(this).children("a").animate({marginTop:'0'}, 500);
    $(this).children("a").delay(3500).animate({marginTop:'100'}, 500);
    $(next).children(".featureStory").delay(4500).animate({  left : '960px' }, 500); 
  });
}

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

person jdehlin    schedule 15.12.2011