Schauen wir uns zunächst den vorherigen Kodex der einheitlichen Bewegung an. Welche Art von Fehler wird nach der Änderung der Geschwindigkeit auftreten. Hier sind zwei Benchmarks zum Testen
Die Codekopie lautet wie folgt:
<style type = "text/css">
#div1 {
Breite: 100px;
Höhe: 100px;
Position: absolut;
Hintergrund: Rot;
Top: 50px;
links: 600px;
}
#div2 {
Breite: 1PX;
Höhe: 300px;
Position: absolut;
links: 300px;
Top: 0;
Hintergrund: Schwarz;
}
#div3 {
Breite: 1PX;
Höhe: 300px;
Position: absolut;
Links: 100px;
Top: 0;
Hintergrund: Schwarz;
}
</style>
<script type = "text/javaScript">
var time = null;
Funktion startMove (itarget) {
var odiv = document.getElementById ("div1");
ClearInterval (Zeit);
time = setInterval (function () {
var speed = 0;
if (odiv.offsetleft <itarget) {
Geschwindigkeit = 7;
} anders {
Geschwindigkeit = -7;
}
// Eigentlich gibt es ein Problem mit dieser Situation
odiv.style.left = odiv.offsetleft + speed + 'px';
}, 30)
}
</script>
</head>
<body>
<Eingabe type = "button" id = "btn" value = "to 100" onclick = "startMove (100)" />
<Eingabe type = "button" id = "btn" value = "to 300" onclick = "startMove (300)" />
<div id = "div1">
</div>
<div id = "div2">
</div>
<div id = "div3">
</div>
</body>
Wenn ein solcher Code die Geschwindigkeit wie 7 auf eine ungerade Zahl ändert und den Zielpunkt erreicht, ist es eine Ganzzahl, die Fehler verursacht, die den Zielpunkt nicht erreichen oder den Zielpunkt überschreiten.
Warum passiert das dann?
Wenn er den Zielpunkt erreicht, kann er den Zielpunkt nicht genau erreichen. Wenn der Zielpunkt jedes Mal 100 und 7 Spaziergänge beträgt, übergibt er entweder den Zielpunkt oder fällt fehl.
Erreichen Sie niemals den Zielpunkt. Tatsächlich ist es ein bisschen so, als würde man der vorherigen Pufferung helfen.
Wie berechnen Sie also, dass Sie den Zielpunkt erreicht haben?
Zum Beispiel: Wenn Sie ein Taxi an einen bestimmten Ort bringen, hält der Fahrer auf jeden Fall 10 Meter und 20 Meter entfernt und selbst wenn Sie ankommen. Es ist unmöglich, das Auto zu bitten, es an diesen Ort zu kleben und anzuhalten.
Tatsächlich ist das Programm also das gleiche. Solange der Abstand zwischen dem Objekt und dem Zielpunkt in einem gewissen Grad nahezu liegt, müssen wir nicht näher sein, und wir glauben, dass wir ihn erreicht haben.
Schauen wir uns den geänderten Code an:
Die Codekopie lautet wie folgt:
<script type = "text/javaScript">
var time = null;
Funktion startMove (itarget) {
var odiv = document.getElementById ("div1");
ClearInterval (Zeit);
time = setInterval (function () {
var speed = 0;
if (odiv.offsetleft <itarget) {
Geschwindigkeit = 7;
} anders {
Geschwindigkeit = -7;
}
if (math.abs (itarget - odiv.offsetleft) <= 7) {
ClearInterval (Zeit);
odiv.style.left = itarget+'px';
} anders {
odiv.style.left = odiv.offsetleft + speed + 'px';
}
}, 30)
}
</script>
Lassen Sie mich erklären: Warum müssen Sie Mathematik verwenden, um hier den absoluten Wert zu erhalten?
Der Grund ist einfach, da die Geschwindigkeit positiv oder negativ sein kann.
Lassen Sie nun den Abstand zwischen dem Ziel und dem Objekt so klein wie 7 sein, dann wird er dort sein. Warum 7? Weil er beim nächsten Mal weniger als 7 Übungen hat. Zu diesem Zeitpunkt haben wir den Zielpunkt erreicht.
Jetzt kommt das Problem wieder und er hörte nicht genau am Zielpunkt auf, auf diese Weise zu schreiben. Deshalb haben wir einen einfachen Satz hinzugefügt, der direkt dem Zielpunkt gleich links gelassen hat. odiv.style.left = itarget+'px';
Tatsächlich gab es letztes Mal weniger als 7 von ihnen, aber jeder weiß, dass das Programm zu schnell läuft und das menschliche Auge es nicht sehen kann. Warmes Lächeln
In dieser Zeit wird es kein Problem geben. Blinken
Dies ist der Stoppzustand für einheitliche Bewegung. Dann fragte ein Freund: Warum ist die Pufferübung nicht so problematisch.
Da sich seine Geschwindigkeit geändert hat und es immer kleiner wird, erreicht er bis zum Ende sogar 1, und es wird definitiv kein solches Problem geben, wenn sie Schritt für Schritt vorwärts gehen.