Jetons d'abord un coup d'œil au code de mouvement uniforme précédent et voyons quel type de bug se produira après la modification de la vitesse. Deux benchmarks sont ajoutés ici pour les tests
Alors pourquoi cela arrive-t-il ?
En fait, lorsqu'il atteint le point cible, il ne peut pas atteindre avec précision le point cible si le point cible est de 100 et qu'il marche 7 fois à chaque fois, soit il dépassera le point cible à ce moment-là, soit il le fera. pas le passer.N’atteignez jamais le point cible. En fait, il ressemble un peu au tampon précédent.
Alors, comment calculez-vous que vous avez atteint le point cible ?
Par exemple : lorsque vous prenez un taxi pour vous rendre à un certain endroit, le chauffeur doit s'être arrêté à environ 10 ou 20 mètres de là où vous vous trouvez, alors vous êtes arrivé. Il est impossible de demander à la voiture de s'arrêter à cet endroit.
Donc, en fait, la procédure est la même. Tant que la distance entre l'objet et le point cible est proche d'un certain niveau, il n'est pas nécessaire de se rapprocher, et nous pensons que c'est fait.
Jetons un œil au code modifié :
time = setInterval(function() {
var vitesse = 0 ;
Si (oDiv.offsetLeft < iTarget) {
Vitesse = 7;
} autre {
Vitesse = -7;
}
Si (Math.abs(iTarget - oDiv.offsetLeft) <= 7) {
oDiv.style.left=iTarget 'px';
} autre {
oDiv.style.left = oDiv.offsetLeft vitesse 'px';
}
}, 30)
}
Expliquez : Pourquoi utilisons-nous Math.abs pour obtenir la valeur absolue ici ?
La raison est simple, car la vitesse peut être positive ou négative.
Maintenant, on laisse la distance entre la cible et l'objet être inférieure à 7, c'est tout. Pourquoi est-il 7 heures ? Parce que son prochain exercice sera inférieur à 7. À ce moment-là, nous le considérerons comme ayant atteint le point cible.
Puis le problème revient. En écrivant ainsi, il ne s'est pas arrêté exactement au point visé. Nous avons donc ajouté une phrase simple et rendu directement la gauche égale au point cible. oDiv.style.left=iTarget 'px';
En fait, moins de 7 personnes sont parties la dernière fois, mais tout le monde sait que le programme tourne trop vite et n'est pas visible à l'œil humain. Sourire chaleureux
Il n'y aura aucun problème pour le moment. clin d'oeil
C'est la condition d'arrêt pour un mouvement uniforme. Ensuite, certains amis ont demandé pourquoi l'exercice de mise en mémoire tampon n'est-il pas si gênant ?
Parce que sa vitesse change, devient de plus en plus petite, jusqu'à ce qu'à la fin il atteigne même 1. Si vous avancez pas à pas, il n'y aura certainement pas un tel problème.