Maison interface Web js tutoriel Une brève analyse des principes de mise en œuvre des compétences Javascript animation_javascript

Une brève analyse des principes de mise en œuvre des compétences Javascript animation_javascript

May 16, 2016 pm 04:11 PM
javascript 动画 实现原理

Supposons qu'il existe une telle exigence de fonction d'animation : changez la largeur d'un div de 100 px à 200 px. Le code écrit peut ressembler à ceci :

Copier le code Le code est le suivant :


function animate1 (élément, endValue, durée) {
var startTime = new Date(),
         startValue = parseInt(element.style.width),
         étape = 1 ;
 
var timerId = setInterval(function() {
        var nextValue = parseInt(element.style.width) step ;
          element.style.width = nextValue 'px';
Si (nextValue >= endValue) {
               clearInterval(timerId);
// Il faut du temps pour afficher l'animation
                element.innerHTML = new Date - startTime;
>
}, durée / (endValue - startValue) * étape);
>

animate1(document.getElementById('test1'), 200, 1000);


Le principe est d’augmenter de 1px à intervalles réguliers jusqu’à atteindre 200px. Cependant, le temps d'affichage après la fin de l'animation est supérieur à 1 seconde (généralement environ 1,5 seconde). La raison est que setInterval ne garantit pas strictement l'intervalle d'exécution.

Y a-t-il une meilleure façon ? Jetons un coup d'œil à un problème de mathématiques à l'école primaire :

Copier le code Le code est le suivant :

Le bâtiment A et le bâtiment B sont distants de 100 mètres. Une personne marche du bâtiment A au bâtiment B à une vitesse constante et marche pendant 5 minutes pour atteindre sa destination. À quelle distance se trouve-t-elle du bâtiment A à la troisième minute ?

La formule de calcul pour calculer la distance à un certain moment en mouvement uniforme est : distance * heure/heure actuelle. La réponse devrait donc être 100 * 3 / 5 = 60 .

L'inspiration apportée par cette question est que la distance à un certain moment peut être calculée grâce à une formule spécifique. De la même manière, la valeur à un certain moment du processus d'animation peut également être calculée via une formule au lieu de s'accumuler :

Copier le code Le code est le suivant :


function animate2(element, endValue, durée) {
var startTime = new Date(),
         startValue = parseInt(element.style.width);

var timerId = setInterval(function() {
      var pourcentage = (nouvelle date - heure de début) / durée ;

var stepValue = startValue (endValue - startValue) * pourcentage ;
          element.style.width = stepValue 'px';

si (pourcentage >= 1) {
               clearInterval(timerId);
                element.innerHTML = new Date - startTime;
>
}, 13);
>

animate2(document.getElementById('test2'), 200, 1000);

Après cette amélioration, vous constatez que le temps d'exécution de l'animation n'aura qu'une erreur de 10 ms au maximum. Mais le problème n'a pas été complètement résolu. La vérification de l'élément test2 dans l'outil de développement du navigateur montre que la largeur finale de test2 peut être supérieure à 200 pixels. Une inspection minutieuse du code de la fonction animate2 révèle :

La valeur de 1.percentage peut être supérieure à 1, ce qui peut être résolu en limitant la valeur maximale via Math.min.
2. Même s'il est garanti que la valeur du pourcentage n'est pas supérieure à 1, tant que endValue ou startValue est une valeur décimale, la valeur de (endValue - startValue) * pourcentage peut toujours produire des erreurs car la précision des opérations décimales Javascript est pas assez. En fait, ce que nous voulons garantir, c'est l'exactitude de la valeur finale, donc lorsque le pourcentage est de 1, utilisez simplement endValue directement.

Donc, le code de la fonction animate2 est modifié comme suit :

Copier le code Le code est le suivant :

function animate2(element, endValue, durée) {
var startTime = new Date(),
         startValue = parseInt(element.style.width);

var timerId = setInterval(function() {
​​​​ // Assurez-vous que le pourcentage n'est pas supérieur à 1
      var pourcentage = Math.min(1, (new Date - startTime) / durée);

var stepValue;
Si (pourcentage >= 1) {
​​​​​​ // Assurer l'exactitude de la valeur finale
             stepValue = endValue;
         } autre {
             stepValue = startValue (endValue - startValue) * pourcentage ;
>
          element.style.width = stepValue 'px';

si (pourcentage >= 1) {
               clearInterval(timerId);
                element.innerHTML = new Date - startTime;
>
}, 13);
>

Il y a une dernière question : pourquoi l'intervalle de setInterval est-il défini sur 13 ms ? La raison en est que le taux de rafraîchissement des moniteurs actuels ne dépasse généralement pas 75 Hz (c'est-à-dire rafraîchi 75 fois par seconde, c'est-à-dire rafraîchi toutes les 13 ms environ). Il est préférable de synchroniser l'intervalle avec le taux de rafraîchissement.

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD
Musée à deux points: toutes les expositions et où les trouver
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'animation ne fonctionne pas dans PowerPoint [Corrigé] L'animation ne fonctionne pas dans PowerPoint [Corrigé] Feb 19, 2024 am 11:12 AM

Essayez-vous de créer une présentation mais vous ne parvenez pas à ajouter une animation ? Si les animations ne fonctionnent pas dans PowerPoint sur votre PC Windows, cet article vous aidera. Il s’agit d’un problème courant dont se plaignent de nombreuses personnes. Par exemple, les animations peuvent cesser de fonctionner lors de présentations dans Microsoft Teams ou lors d'enregistrements d'écran. Dans ce guide, nous explorerons diverses techniques de dépannage pour vous aider à corriger les animations qui ne fonctionnent pas dans PowerPoint sous Windows. Pourquoi mes animations PowerPoint ne fonctionnent-elles pas ? Nous avons remarqué que certaines raisons possibles pouvant entraîner le dysfonctionnement de l'animation dans PowerPoint sous Windows sont les suivantes : En raison de problèmes personnels

Comment configurer l'animation ppt pour entrer d'abord puis sortir Comment configurer l'animation ppt pour entrer d'abord puis sortir Mar 20, 2024 am 09:30 AM

Nous utilisons souvent ppt dans notre travail quotidien, alors connaissez-vous toutes les fonctions opérationnelles de ppt ? Par exemple : comment définir les effets d'animation dans ppt, comment définir les effets de commutation et quelle est la durée de l'effet de chaque animation ? Chaque diapositive peut-elle être lue automatiquement, entrer puis quitter l'animation ppt, etc. Dans le numéro d'aujourd'hui, je partagerai avec vous les étapes spécifiques d'entrée puis de sortie de l'animation ppt. Elles sont ci-dessous. 1. Tout d'abord, nous ouvrons ppt sur l'ordinateur, cliquez à l'extérieur de la zone de texte pour sélectionner la zone de texte (comme indiqué dans le cercle rouge dans la figure ci-dessous). 2. Ensuite, cliquez sur [Animation] dans la barre de menu et sélectionnez l'effet [Effacer] (comme indiqué dans le cercle rouge sur la figure). 3. Ensuite, cliquez sur [

WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel Dec 17, 2023 pm 05:30 PM

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Après un retard de deux ans, le film d'animation national en 3D 'Er Lang Shen : The Deep Sea Dragon' devrait sortir le 13 juillet. Après un retard de deux ans, le film d'animation national en 3D 'Er Lang Shen : The Deep Sea Dragon' devrait sortir le 13 juillet. Jan 26, 2024 am 09:42 AM

Ce site Web a rapporté le 26 janvier que le film d'animation national en 3D « Er Lang Shen : Le dragon des profondeurs » avait publié une série de dernières images fixes et a officiellement annoncé qu'il sortirait le 13 juillet. Il est entendu que "Er Lang Shen : The Deep Sea Dragon" est produit par Mihuxing (Beijing) Animation Co., Ltd., Horgos Zhonghe Qiancheng Film Co., Ltd., Zhejiang Hengdian Film Co., Ltd., Zhejiang Gongying Film. Co., Ltd., Chengdu Le film d'animation produit par Tianhuo Technology Co., Ltd. et Huawen Image (Beijing) Film Co., Ltd. et réalisé par Wang Jun devait initialement sortir en Chine continentale le 22 juillet 2022. . Synopsis de l'intrigue de ce site : Après la bataille des dieux conférés, Jiang Ziya a pris la « Liste des dieux conférés » pour diviser les dieux, puis la liste des dieux conférés a été scellée par la Cour céleste sous la mer profonde de Kyushu Royaume secret. En fait, en plus de conférer des positions divines, il existe également de nombreux esprits maléfiques puissants scellés dans la liste des dieux conférés.

Le film d'animation 'Porco Rosso' de Hayao Miyazaki a été prolongé jusqu'au 16 janvier de l'année prochaine, avec un score Douban de 8,6 Le film d'animation 'Porco Rosso' de Hayao Miyazaki a été prolongé jusqu'au 16 janvier de l'année prochaine, avec un score Douban de 8,6 Dec 18, 2023 am 08:07 AM

Selon les nouvelles de ce site, le film d'animation "Porco Rosso" de Hayao Miyazaki a annoncé qu'il prolongerait la date de sortie jusqu'au 16 janvier 2024. Ce site avait précédemment rapporté que "Porco Rosso" avait été lancé dans la ligne spéciale de cinéma de la Fédération nationale des arts. le 17 novembre, avec un box-office cumulé de plus de 2 000 à 10 000, avec un score Douban de 8,6, et 85,8% de critiques 4 et 5 étoiles. "Porco Rosso" a été produit par le Studio Ghibli et réalisé par Hayao Miyazaki Moriyama, Tokiko Kato, Otsuka Akio, Okamura Akemi et d'autres ont participé au doublage. Il est initialement sorti au Japon en 1992. Le film est adapté de la bande dessinée de Hayao Miyazaki "L'ère des dirigeables" et raconte l'histoire de l'as pilote de l'armée de l'air italienne Pollock Rosen qui a été comme par magie transformé en cochon. Après cela, il est devenu un chasseur de primes, luttant contre les voleurs de l'air et protégeant son entourage. Synopsis : Rosen est un soldat de la Première Guerre mondiale

JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel Dec 17, 2023 pm 05:13 PM

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

Meilleur générateur d'art d'animation IA gratuit Meilleur générateur d'art d'animation IA gratuit Feb 19, 2024 pm 10:50 PM

Si vous êtes impatient de trouver le meilleur générateur gratuit d'art d'animation IA, vous pouvez mettre fin à votre recherche. Le monde de l’art anime captive le public depuis des décennies avec ses personnages uniques, ses couleurs captivantes et ses intrigues captivantes. Cependant, créer de l’art anime nécessite du talent, des compétences et beaucoup de temps. Cependant, avec le développement continu de l'intelligence artificielle (IA), vous pouvez désormais explorer le monde de l'art d'animation sans avoir à vous plonger dans des technologies complexes à l'aide du meilleur générateur d'art d'animation IA gratuit. Cela vous ouvrira de nouvelles possibilités pour libérer votre créativité. Qu'est-ce qu'un générateur d'art anime IA ? L'AI Animation Art Generator utilise des algorithmes sophistiqués et des techniques d'apprentissage automatique pour analyser une vaste base de données d'œuvres d'animation. Grâce à ces algorithmes, le système apprend et identifie différents styles d'animation

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

See all articles