【发布时间】:2016-10-25 08:08:09
【问题描述】:
目前我有一个无限循环动画,那是循环上的一些元素,比如 box1、box2、box3,比如旋转的寿司。 当我点击这个框时,它会弹出一些信息并停止动画,4秒后它会再次动画。
但我现在面临的问题是,在 4 秒后重新激活时,由于动画持续时间,速度看起来非常慢。 这是我的代码。
var timeoutBox;
$('.sushi_box').on('click', function(){
$('.sushi_item').removeClass('active');
$(this).parent().addClass('active');
// here another code for stop the sushi roll.
$('.total_roll').clearQueue().stop();
// after 4 sec hide box;
clearTimeout(timeoutBox);
timeoutBox = setTimeout(function(){
$('.sushi_item').removeClass('active');
// here another code for reanimate the sushi roll.
animateLoop();
}, 4000)
})
function animateLoop(){
var originWidth = $('.sushi_roll.origin').outerWidth(true);
$('.total_roll').animate({ "left": -originWidth }, {
easing:"linear",
duration:5000,
complete: function(){
$('.total_roll').css({ "left": 0});
originNumber++;
console.log(originNumber);
if(originNumber == 1){
console.log(1);
var origin = $('.sushi_roll.origin').html();
$('.sushi_roll.origin').remove();
$('.total_roll').append('<div class="sushi_roll origin">'+origin+'</div>');
var $sushiWidth = $('.sushi_roll .sushi_item').outerWidth(true);
var $sushiHeight = $('.sushi_item').outerHeight(true);
var $sushiOrginLength = $('.sushi_roll.origin .sushi_item').length;
var $sushiCloneLength = $('.sushi_roll.clone .sushi_item').length;
$('.sushi_roll.origin').css({
"width" : $sushiOrginLength*$sushiWidth,
"height" : $sushiHeight
});
} else if(originNumber == 2){
console.log(2);
var clone = $('.sushi_roll.clone').html();
$('.sushi_roll.clone').remove();
$('.total_roll').append('<div class="sushi_roll clone">'+clone+'</div>');
var $sushiWidth = $('.sushi_roll .sushi_item').outerWidth(true);
var $sushiHeight = $('.sushi_item').outerHeight(true);
var $sushiOrginLength = $('.sushi_roll.origin .sushi_item').length;
var $sushiCloneLength = $('.sushi_roll.clone .sushi_item').length;
$('.sushi_roll.clone').css({
"width" : $sushiOrginLength*$sushiWidth,
"height" : $sushiHeight
});
}
if(originNumber>=2){
originNumber=0;
}
animateLoop();
}
});
}
animateLoop();
这是另一个简化版本。 当动画快结束时,当我点击停止并重新开始时,动画变得非常缓慢,我知道这是一个持续时间问题。有人知道如何解决这个问题吗?
【问题讨论】:
-
很难想象这个问题,你能在jsfiddle.net中给我们展示一个工作示例吗?
-
(继续 @RoryMcCrossan 的)或 Stackoverflow 的 Snippet。
-
给你,我在 jsfiddle 中创建的是简化版。 jsfiddle.net/xcg3xtsq/2
-
抱歉我的英语不好,我确实尝试过 clearQueue 并停止,但是一旦我再次回调动画,动画实际上会占用之前的持续时间但不会继续。你有什么解决办法吗?