Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как остановить анимацию на последнем кадре? (https://javascript.ru/forum/misc/69993-kak-ostanovit-animaciyu-na-poslednem-kadre.html)

VictorHub 02.08.2017 00:15

Как остановить анимацию на последнем кадре?
 
Доброй ночи! Ребята надеюсь на помощь знающих, сам в js почти что нуб, только начал изучение, но вот появилась задача которую нужно решить. А именно организовать простенькую фоновую анимацию на сайте. На просторах интернета решение было найдено, но дело в том, что анимация получилась зацикленной, а мне нужно остановить ее на последнем кадре. Подскажите пожалуйста что нужно поправить, чтобы добиться желаемого эффекта.

Вот код:

var animated_element = document.getElementById('bg');
			
	var frame_width = animated_element.offsetWidth;			
	var total_frames = 4;			
        var frame_count = 0;
        
setInterval(function(){
			
       var new_x = (frame_count * frame_width) * -1;
       animated_element.style.backgroundPosition = new_x+'px 0px';
			 
			 if (frame_count < total_frames){
				frame_count += 1;
				}else{
				frame_count = 0;				
				}
			 
			
			},400);

рони 02.08.2017 00:25

VictorHub,
var animated_element = document.getElementById('bg');

  var frame_width = animated_element.offsetWidth;
  var total_frames = 4;
        var frame_count = 0;

var timer = setInterval(function(){

       var new_x = (frame_count * frame_width) * -1;
       animated_element.style.backgroundPosition = new_x+'px 0px';

       if (frame_count < total_frames){
        frame_count += 1;
        }else{
        window.clearTimeout(timer)
        }


      },400);

VictorHub 02.08.2017 08:46

Доброе утро! Спасибо, но ваше решение останавливает анимацию на первом кадре спрайта. https://codepen.io/VictorHub/full/qXNMPP Сейчас пытаюсь на основе полученного ответа решить вопрос, но пока кроме ошибок в консоли у меня ничего не получается(((

Nexus 02.08.2017 09:34

VictorHub, смените кол-во кадров с 4 на 3.
var total_frames = 3;

VictorHub 02.08.2017 09:48

Цитата:

Сообщение от Nexus (Сообщение 460349)
VictorHub, смените кол-во кадров с 4 на 3.
var total_frames = 3;

Вы меня сильно выручили, всем спасибо! Жаль, я пока не способен сам находить такие решения так как еще даже не дочитал до средины книгу по JavaScript. А если бы и нашел то метод тыка занял бы у меня целый день, а то и два:blink:


Часовой пояс GMT +3, время: 07:18.