Показать сообщение отдельно
  #4 (permalink)  
Старый 25.12.2016, 10:49
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

Вроде справился
train.style.left = 0;

let currentPosition = parseInt(train.style.left, 10),
	distance = 500,
	movingTime = 4000;

train.onclick = function() {
	animate(function(timePassed) {
		train.style.left = timePassed * (distance / movingTime) + 'px';
		currentPosition = parseInt(train.style.left, 10);
	});
};

function animate(draw) {
	var start = performance.now();
	requestAnimationFrame(function animate(time) {

		var timePassed = time - start;

		// if (timePassed > duration) {
		// 	timePassed = duration;
		// }

		draw(timePassed);

		if (currentPosition < distance) {
			requestAnimationFrame(animate);
		}

	});
}

Не уверен насчет проверяющего условия, нужно ли там где то использовать время.
И еще закомментированный код из примера, не совсем понимаю зачем он нужен.
Ответить с цитированием