Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2017, 00:15
Новичок на форуме
Отправить личное сообщение для VictorHub Посмотреть профиль Найти все сообщения от VictorHub
 
Регистрация: 01.08.2017
Сообщений: 3

Как остановить анимацию на последнем кадре?
Доброй ночи! Ребята надеюсь на помощь знающих, сам в 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);
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2017, 00:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

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);
Ответить с цитированием
  #3 (permalink)  
Старый 02.08.2017, 08:46
Новичок на форуме
Отправить личное сообщение для VictorHub Посмотреть профиль Найти все сообщения от VictorHub
 
Регистрация: 01.08.2017
Сообщений: 3

Доброе утро! Спасибо, но ваше решение останавливает анимацию на первом кадре спрайта. https://codepen.io/VictorHub/full/qXNMPP Сейчас пытаюсь на основе полученного ответа решить вопрос, но пока кроме ошибок в консоли у меня ничего не получается(((
Ответить с цитированием
  #4 (permalink)  
Старый 02.08.2017, 09:34
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

VictorHub, смените кол-во кадров с 4 на 3.
var total_frames = 3;
Ответить с цитированием
  #5 (permalink)  
Старый 02.08.2017, 09:48
Новичок на форуме
Отправить личное сообщение для VictorHub Посмотреть профиль Найти все сообщения от VictorHub
 
Регистрация: 01.08.2017
Сообщений: 3

Сообщение от Nexus Посмотреть сообщение
VictorHub, смените кол-во кадров с 4 на 3.
var total_frames = 3;
Вы меня сильно выручили, всем спасибо! Жаль, я пока не способен сам находить такие решения так как еще даже не дочитал до средины книгу по JavaScript. А если бы и нашел то метод тыка занял бы у меня целый день, а то и два
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поставить анимацию во время работы скрипта? olegalimov Events/DOM/Window 3 24.07.2016 09:44
Как остановить следование за курсором raffx Events/DOM/Window 2 31.01.2016 00:58
Как остановить рекурсивную функцию по клику? Lutidza Общие вопросы Javascript 7 23.01.2016 16:41
Как сделать такую анимацию Eser Элементы интерфейса 1 18.11.2015 18:27
как можно зациклить анимацию? imedia Элементы интерфейса 0 10.06.2015 21:07