현재 루프 애니메이션에는 하나의 무한 루프 애니메이션이 있습니다. 회전하는 초밥처럼 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();
여기서 다른 단순화 된 버전이다. 애니메이션이 거의 끝나면 나를 멈추고 다시 시작하면 애니메이션이 느려집니다. 느린 재생 시간은 느려집니다. 누구든지이 문제를 해결하는 방법을 알았습니까? 당신이 언급했듯이
이 문제를 시각화하기 어렵다 , http://jsfiddle.net에서 실제 예제를 보여줄 수 있습니까? –
(계속 @RoryMcCrossan의 것) 또는 Stackoverflow의 ** 스 니펫 **. – divy3993
여기에 jsfiddle에서 만든 버전이 간소화되었습니다. https://jsfiddle.net/xcg3xtsq/2/ –