現在、私は無限ループアニメーションを1つ持っていました。ループ1の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();
別の簡素化バージョンです。 アニメーションがほぼ終了したら、私を止めてもう一度やり直すと、アニメーションがextramになります。誰でもこれを解決する方法を知っていますか?
それは、問題を視覚化するのは難しいですhttp://jsfiddle.netの実例を見せてくれますか? –
(@ RoryMcCrossanの続き)またはStackoverflowの** Snippet ** – divy3993
ここに行くと、jsfiddleで作成したものがバージョンを単純化しています。 https://jsfiddle.net/xcg3xtsq/2/ –