У меня есть элемент, который я оживляю для перемещения по экрану. От left:-100px
до left:screen-width
. Я петлю это 4 раза.Цикл анимации JS при возврате, чтобы скрыть элемент
При возврате элемента в исходное положение left:-100px
, я не хочу, чтобы это было видно перемещение по экрану (справа налево) очень быстро.
Я попытался сделать это, сокрыв элемент с помощью .hide()
, а затем показывая его через некоторое время (чтобы у него было время вернуться в исходное положение). Но это не работы:
$('.snake-image').hide();
$('.snake-image').css('top', height/2).css('left', currentPos);
setTimeout(function(){$('.snake-image').show();},1000);
Код:
$('body').append('<a href="#"><img src="https://dl.dropboxusercontent.com/u/48552248/projects/covve/website/2015/public/images/snake.png" class="snake-image" style="position:absolute;top:0;" />');
function goRight(currentPos) {
$('.snake-image').animate({
left: currentPos
}, 100);
}
function moveSnake() {
while (currentPos <= width) {
goRight(currentPos);
currentPos += 20;
console.log(width + " x " + currentPos);
}
}
var currentPos,
height = $(window).height(),
width = $(window).width(),
i = 4;
var intervalID = setInterval(function(){
if (i > 0){
currentPos = -100;
$('.snake-image').hide();
$('.snake-image').css('top', height/2).css('left', currentPos);
setTimeout(function(){$('.snake-image').show();},1000);
moveSnake();
i--;
console.log('Interval 1');
} else {
clearInterval(intervalID);
}
}, 100);
Демо: http://jsfiddle.net/m0epjLym/
Спасибо. Я пытаюсь добавить 'setInterval()' ('timeOut()' также может работать) внутри обратного вызова animate каким-то образом, так что он немного ждет, прежде чем запускать анимацию снова. Но я не могу заставить его работать. Он съедает две петли (4 и выполняет только 2). – Alex
Я добавил строку, чтобы сделать это, та же скрипка, вы должны использовать setTimeout вместо setInterval, в этом случае – user1555320
извините измененный скрипт http://jsfiddle.net/ut0e8txp/ – user1555320