Animations-Timing – Einstieg mit zeitbasierten Schleifen
Eine kleine Animationsschleife erstellen, zeitbasierte (Delta-)Aktualisierungen verwenden, requestAnimationFrame simulieren und ein einfaches Easing hinzufügen
Animations-Timing – Einstieg mit zeitbasierten Schleifen ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des JavaScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der JavaScript Academy-Kurs umfasst insgesamt 3 Lektionen.
Warum zeitbasierte Animation?
Ziel: Flüssige Bewegungen mit zeitbasierten Aktualisierungen steuern.
- requestAnimationFrame simulieren
- Delta-Zeit messen
- Mit Einheiten pro Sekunde bewegen
- Eine kleine Easing-Funktion hinzufügen

Simuliertes rAF
Da hier kein DOM vorhanden ist, simulieren wir requestAnimationFrame mit setTimeout und etwa 16 ms Verzögerung.
// requestFrame: simulate ~60 FPS with setTimeout
function requestFrame(fn) {
// ~16ms between frames for ~60fps
return setTimeout(function () { fn(Date.now()); }, 16);
}
function cancelFrame(id) {
clearTimeout(id);
}
// Tiny demo: schedule one frame
requestFrame(function (ts) {
console.log("frame at", ts);
});

Grundlagen der Delta-Zeit
Berechnen Sie in jedem Frame die Delta-Zeit: (now − last) / 1000. Dadurch wird die Bewegung an die tatsächliche Zeit angepasst.
// Time-based loop: compute delta time in seconds
let running = true;
let last = Date.now();
function loop() {
if (!running) { return; }
const now = Date.now();
const dt = (now - last) / 1000; // seconds
last = now;
// Print a tiny delta preview
console.log("dt", dt.toFixed(3), "s");
requestFrame(loop);
}
// Start the loop and stop after a few frames
loop();
setTimeout(function () {
running = false;
console.log("stop");
}, 60);

Einheiten pro Sekunde
Verwenden Sie speed × dt, um die Position zu aktualisieren, damit die Bewegung bei unterschiedlichen Bildraten gleichmäßig bleibt.
// Move with a speed in units/second
let x = 0; // position
const speed = 50; // units per second
let lastT = Date.now();
let frames = 0;
function moveLoop() {
const now = Date.now();
const dt = (now - lastT) / 1000;
lastT = now;
// Distance = speed * time
x = x + speed * dt;
frames = frames + 1;
console.log("x", Math.round(x));
if (frames < 5) {
requestFrame(moveLoop);
} else {
console.log("final x", Math.round(x));
}
}
moveLoop();

Kleine Easing-Demo
Easing formt die Kurve. easeOutQuad startet hier schnell und wird gegen Ende langsamer.
// Ease from 0 to 1 over duration using easeOutQuad
function easeOutQuad(t) {
// t in [0,1]
return 1 - (1 - t) * (1 - t);
}
async function tween(durationMs) {
let start = Date.now();
let id = null;
function step() {
const now = Date.now();
const t = Math.min(1, (now - start) / durationMs);
const eased = easeOutQuad(t);
console.log("eased", eased.toFixed(2));
if (t < 1) {
id = requestFrame(step);
} else {
cancelFrame(id);
console.log("done");
}
}
step();
}
tween(60);

Einblick in den festen Schritt
Ein fester Schritt kann die Logik stabilisieren. Der accumulator holt verpasste Schritte nach, wenn ein Frame verspätet ist.
// Fixed-step taste: step a physics tick and catch up using an accumulator
let acc = 0; // accumulated time
const step = 1 / 30; // 30 FPS fixed step in seconds
let lastTime = Date.now();
let value = 0;
let fixedFrames = 0;
function fixedLoop() {
const now = Date.now();
const dt = (now - lastTime) / 1000;
lastTime = now;
acc = acc + dt;
// Run zero or more fixed steps to catch up
while (acc >= step) {
// Update logic at a fixed rate
value = value + 1; // pretend physics
acc = acc - step;
}
console.log("value", value);
fixedFrames = fixedFrames + 1;
if (fixedFrames < 5) {
requestFrame(fixedLoop);
} else {
console.log("fixed stop");
}
}
fixedLoop();

Quiz zu Delta-Zeit und festen Schritten
Kurzer Check: Warum Delta-Zeit?

Zusammenfassung
Zusammenfassung: Sie haben rAF mit setTimeout simuliert, die Delta-Zeit gemessen, Bewegungen mit Einheiten pro Sekunde ausgeführt, ein Ease-out hinzugefügt und einen festen Schritt mit einem Akkumulator kennengelernt.

Häufig gestellte Fragen
Ist die Lektion „Animations-Timing – Einstieg mit zeitbasierten Schleifen“ kostenlos?
Ja — der vollständige Text von „Animations-Timing – Einstieg mit zeitbasierten Schleifen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des JavaScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der JavaScript Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Animations-Timing – Einstieg mit zeitbasierten Schleifen“?
Eine kleine Animationsschleife erstellen, zeitbasierte (Delta-)Aktualisierungen verwenden, requestAnimationFrame simulieren und ein einfaches Easing hinzufügen Du übst JavaScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um JavaScript Academy zu starten?
Keine Vorkenntnisse erforderlich. JavaScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.
Wie lange dauert die Lektion „Animations-Timing – Einstieg mit zeitbasierten Schleifen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser JavaScript Academy-Lektion Code schreiben und ausführen?
Ja. Jede JavaScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- setTimeout, setInterval und Timer-Drift
- Debounce vs. Throttle – selbst implementiert
- Animations-Timing – Einstieg mit zeitbasierten Schleifen