2013-02-27 4 views
1

Желание ротатора удерживать изображение за 4 секунды, прежде чем перейти к анимации выцветания. Я попытался войти в .delay во многие места, но я просто не могу понять, куда он пойдет. Заранее спасибо. Знайте только немного о jquery.Как добавить задержку к этому ротатору изображений?

/* image rotator */ 
function changeImg(){ 
$('.photogallery').animate({opacity: 0}, 3000, function(){ 
$(this).css('background','url(' + preloadArr[currImg++%preloadArr.length].src +') ',); 

}).animate({opacity: 1}, 3000); 
} 

}); 
+0

где бы вы использовали 3000, это только задержка анимации. – Nils

+0

Я не уверен, что понимаю, что вы имеете в виду. Сожалею. – bradley

+0

У вас есть рабочий код как есть? Вы пытаетесь создать свой собственный слайдер jQuery? Если да, отправьте остальную часть кода (HTML и CSS), чтобы мы могли лучше понять, что происходит. Если вы используете плагин jQuery, укажите, какой из них вы используете. – Swordfish0321

ответ

1

Если вы собираетесь использовать метод, который вы имеете в данный момент, вы должны поместить .delay() до вашего первоначального вызова .animate(). Однако это предполагает, что вы вызываете этот метод несколько раз подряд.

$('.photogallery').delay(4000).animate({ 
    opacity: 0 
}, 3000, function() { 
    $(this).css('background', 'url(' + preloadArr[currImg++%preloadArr.length].src +')'; 
}).animate({ 
    opacity: 1 
}, 3000); 

DEMO

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

$('.photogallery').delay(4000).animate({ 
    opacity: 0 
}, 3000, function() { 
    $(this).css('background', 'url(' + preloadArr[currImg++%preloadArr.length].src +')'; 
    colorIndex++; 
}).animate({ 
    opacity: 1 
}, 3000, changeImg); 

DEMO

Предпочтительный метод, вероятно, будет использовать window.setInterval установить интервал времени между моментом, когда браузер вызывает метод. Вам придется играть со временем, поскольку оно не учитывает задержки анимации, происходящие внутри метода. Чтобы обойти это легко, я просто назвал его один раз перед планированием с помощью setInterval.

changeImg(); 
window.setInterval(changeImg, 4000); 

DEMO

+0

Большое спасибо! – bradley

+0

@bradley Рад, что это помогло. Посмотрите мое последнее обновление. Рекурсивный метод, который я добавил, часто вызывает проблемы в браузерах, поэтому я бы предложил окончательный вариант, если вы хотите постоянно работать. –

+0

Рубен мог бы получить вашу электронную почту? Может использовать некоторые данные на сайте, который я делаю. – bradley

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