setInterval замени на setTimeout - полегчает немного
Чтобы анимация не была зациклена нужно уметь ее останавливать. Если был запущен setInterval, то он будет вызывать переданную функцию через заданные промежутки времени пока страница не будет закрыта - вот и получается зацикленная бесконечная анимация. Если не подходит setTimeout, то, скорее всего, нужно несколько раз выполнить функцию анимации. Нужно условие по которому можно стопнуть setInterval.
function repeatWithInterval(callback, interval, repeatCount) {
repeatCount = repeatCount != null ? repeatCount : Infinity;
var count = 0;
var timer = setInterval(function() {
callback();
if(++count >= repeatCount) {
clearInterval(timer);
}
}, interval);
}
repeatWithInterval(function() { show_animate(2); }, 1100, 4);
Конечно, условие для прерывания цикла может быть любым.
Таким образом, ответ на вопрос "Почему-то не останавливается анимация, она зациклилась, как быть?" - нужно уметь прерывать анимацию, нужно контролировать количество вызовов функци show_animate.