У меня есть слайд-шоу, работающее с потрясающим плагином цикла, и когда вы нажимаете кнопку в шоу, я показываю скрытый слой на странице и отправляю команду «пауза» для цикла. У меня две проблемы:
Когда получена команда паузы, цикл сразу же возвращается к 1-му слайду в последовательности (почему ??) и не выполняет мои обратные вызовы до/после.
После закрытия слоя я отправляю команду «возобновить» для цикла. Слайд-шоу возобновляется (с 1-го слайда, где его оставила пауза), но теперь цикл вообще не вызывает мои обратные вызовы до/после, даже во время слайд-шоу.
Итак, я думаю, мой вопрос: как я могу правильно приостановить/возобновить слайд-шоу, чтобы этого странного поведения не происходило? (И, чтобы быть полностью ясным и избежать путаницы, это не о функции «пауза при наведении», которая на самом деле работает нормально для меня. :-)
Вот моя инициализация цикла () и мои функции обратного вызова. (Вы спросите, почему я вручную отслеживаю nextSlide? Потому что встроенное значение для текущего слайда не обновляется должным образом для обратных вызовов до/после.)
$(document).ready(function() {
$('#slideshow').cycle({
fx: 'fade', // choose your transition type, ex: fade, scrollUp, shuffle, etc...
timeout: 4000, // milliseconds between slide transitions (0 to disable auto advance)
speed: 1000, // speed of the transition (any valid fx speed value)
pause: 1, // true to enable "pause on hover"
delay: 0, // additional delay (in ms) for first transition (hint: can be negative)
slideExpr: 'img', // expression for selecting slides (if something other than all children is required)
before: moveArrow, // function to call when moving to next slide
after: upd, // function to call when moving to next slide
fastOnEvent: 'fast',
});
});
var nextSlide = 0;
function upd(a, b, c) {
nextSlide = nextSlide + 1; // track which slide we're on
c = $('#slideshow img').length;
if(nextSlide > (c - 1)) nextSlide = 0; // wrap back to 1st
}
// move indicator showing which slide we're on
function moveArrow(a, b, c) {
$('#slide-indicator').attr('class', 'c'+nextSlide);
$(".clickmap").hide(); // hide other clickmaps
$(".clickmap.c"+nextSlide).show(); // show map for this slide
return true;
}
Спасибо за любые мысли по этому поводу...
лучший, Эрик