【发布时间】:2017-03-03 20:08:46
【问题描述】:
我想完成这项工作并且可以被打断。应该有 1 秒的淡入,1 秒的淡出,中间有 3 秒的延迟,但是在这 3 秒或 1 秒的淡入/淡出期间,可能会发生另一个应该发生的动作——停止之前的动作并且永远不会完成它。 例如,在显示图像的 3 秒期间,用户想要转到下一个/下一个/下一个/下一个,因此动画应该立即停止并转到下一个/下一个/下一个/下一个(多次用户点击),而无需完成在此之前开始的动画.
外部调用:SlideShow(1);或幻灯片(-1);等
function SlideShow(action) {
slideCount = (slideCount+action) % totalSlides;
slides.eq(slideCount).fadeIn(fadeInAmount);
// add 3 second delay/SetTimeout/etc here
// how should setTimeout be involved here so that it, and the fadein/fadeout are stoppable (without ever continuing)
slides.eq(slideCount).fadeOut(fadeOutAmount,function() {
slideCount = (slideCount+increment) % totalSlides;
SlideShow(0);
});
}
这是1s淡入,3s延迟,1s淡出的起点
slides.eq(slideCount).fadeIn(fadeInAmount).delay(fadeDelay).addClass('jqImage').fadeOut(fadeOutAmount,function() {
slideCount = (slideCount+increment) % totalSlides;
SlideShow(0);
});
这是使用 setTimeout 的一次无效尝试:
function timerStop() {
if (runningTimer) {
clearTimeout(runningTimer);
runningTimer = 0;
}
}
var runningTimer;
function SlideShow(action) {
// $('body').stop(); slides.eq(slideCount).dequeue(); slides.eq(slideCount).stop();
slideCount=(slideCount+action) % totalSlides;
$('#slideControls').html(
(slideCount+1) + "/" + totalSlides
+ "<br>" + "Delay: " + fadeDelay/1000
+ "<br>" + "Skip: " + increment
);
$('#slideStatusbar').html( slides.eq(slideCount).find('img').attr('src').replace(/^.*[\\\/]/, '') ); // Filename only
//slides.eq(slideCount).fadeIn(fadeInAmount).delay(fadeDelay).addClass('jqImage').fadeOut(fadeOutAmount,function() {
// slideCount < totalSlides-1 ? slideCount+=increment : slideCount=0;
// slideCount = (slideCount+increment) % totalSlides;
// SlideShow(0);
// slides.eq(slideCount).addClass('jqImage');
slides.eq(slideCount).fadeIn(fadeInAmount);
runningTimer=setTimeout(function(){
slides.eq(slideCount).fadeOut(fadeOutAmount,function() {
slideCount = (slideCount + increment) % totalSlides; //slideCount = (slideCount + (action ? action : increment)) % totalSlides;
SlideShow(0);
});
}, 1000);
}
【问题讨论】:
-
"increment" 是一个全局变量,设置为 50,50 张图像会自动跳过,无需用户交互,但如果用户按下 Next/Previous,则丢弃所有内容,执行 Next/Previous,然后继续用户的下一张/上一张图像淡入、延迟、淡出后增加 50。
-
有人可以帮忙吗?
-
仍在为此苦苦挣扎
-
你能发布一个 HTML 样本来帮助我重现这个吗?
-
也许提供一个实时链接会更容易......我会确切地看到你在哪里。
标签: jquery settimeout fadein