Die Frage ist, wie man den Zug durch den zweiten Klick in die Ausgangsposition zurückbringt.Animation mit setInterval in JavaScript
Animation in diesem Fall wird von 0 bis 400px in der linken gezeichnet. Ich brauche einen zweiten Klick, um von 400px auf 0 zu zeichnen, damit der Zug in seine ursprüngliche Position zurückkehrt.
Und warum in dieser Animation der Zug nicht immer in 400px wichtig ist, und wie wir Genauigkeit erreichen, wenn Sie diese Funktion verwenden.
train.onclick = function() {
var start = Date.now(); // сохранить время начала
var timer = setInterval(function() {
// вычислить сколько времени прошло из opts.duration
var timePassed = Date.now() - start;
train.style.left = timePassed/5 + 'px';
if (timePassed > 2000) clearInterval(timer);
}, 20);
}
#train {
position: relative;
cursor: pointer;
}
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<img id="train" src="https://js.cx/clipart/train.gif">
</body>
</html>
Sie nicht auf das Intervall verlassen . Sie sollten 4 Konstanten haben. Startposition, Startzeit, Endposition und Endzeit. Versuchen Sie zwischen 30 Sekunden und 30 Sekunden pro Sekunde mit requestAnimationFrame. Für jeden Frame holst du die aktuelle Zeit und du kannst damit die Position berechnen, an der das Element sein soll. Wenn der Rahmen "nachläuft", kein Problem. Der nächste Frame wird aufholen, weil er die neue Zeit für die Berechnung verwendet. Für weitere Informationen, lesen Sie in "Game Loop", verwenden Sie GreenSock oder Plain CSS und lassen Sie den Browser diese Berechnung durchführen. –