Heim Web-Frontend js-Tutorial Eine kurze Analyse der Implementierungsprinzipien der Javascript-Animation_Javascript-Fähigkeiten

Eine kurze Analyse der Implementierungsprinzipien der Javascript-Animation_Javascript-Fähigkeiten

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

Angenommen, es gibt eine solche Animationsfunktionsanforderung: Ändern Sie die Breite eines Divs von 100 Pixel auf 200 Pixel. Der geschriebene Code könnte so aussehen:

Code kopieren Der Code lautet wie folgt:


Funktion animate1(element, endValue, duration) {
var startTime = new Date(),
         startValue = parseInt(element.style.width),
         Schritt = 1;
 
var timerId = setInterval(function() {
        var nextValue = parseInt(element.style.width) step;
          element.style.width = nextValue 'px';
If (nextValue >= endValue) {
               clearInterval(timerId);
// Es dauert einige Zeit, die Animation anzuzeigen
                element.innerHTML = neues Datum - startTime;
}
}, Dauer / (endValue - startValue) * Schritt);
}

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


Das Prinzip besteht darin, in regelmäßigen Abständen 1 Pixel zu erhöhen, bis 200 Pixel erreicht sind. Allerdings beträgt die Anzeigezeit nach Ende der Animation mehr als 1 Sekunde (normalerweise etwa 1,5 Sekunden). Der Grund dafür ist, dass setInterval das Ausführungsintervall nicht strikt garantiert.

Gibt es einen besseren Weg? Werfen wir einen Blick auf eine Mathematikaufgabe aus der Grundschule:

Code kopieren Der Code lautet wie folgt:

Gebäude A und Gebäude B sind 100 Meter voneinander entfernt. Eine Person geht mit konstanter Geschwindigkeit von Gebäude A zu Gebäude B und läuft 5 Minuten, um das Ziel zu erreichen.

Die Berechnungsformel zur Berechnung der Distanz zu einem bestimmten Zeitpunkt bei gleichförmiger Bewegung lautet: Distanz * aktuelle Zeit / Uhrzeit. Die Antwort sollte also 100 * 3 / 5 = 60 lauten.

Die Inspiration dieser Frage ist, dass die Entfernung zu einem bestimmten Zeitpunkt durch eine bestimmte Formel berechnet werden kann. Auf die gleiche Weise kann der Wert zu einem bestimmten Zeitpunkt während des Animationsprozesses auch über eine Formel berechnet werden, anstatt ihn zu akkumulieren:

Code kopieren Der Code lautet wie folgt:


Funktion animate2(element, endValue, duration) {
var startTime = new Date(),
         startValue = parseInt(element.style.width);

var timerId = setInterval(function() {
      var Prozentsatz = (neues Datum – Startzeit) / Dauer;

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

wenn (Prozentsatz >= 1) {
               clearInterval(timerId);
                element.innerHTML = neues Datum - startTime;
}
}, 13);
}

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

Nach dieser Verbesserung können Sie sehen, dass die Ausführungszeit der Animation nur noch einen Fehler von höchstens 10 ms aufweist. Das Problem wurde jedoch nicht vollständig gelöst. Die Überprüfung des test2-Elements im Browser-Entwicklungstool zeigt, dass die endgültige Breite von test2 möglicherweise mehr als 200 Pixel beträgt. Eine sorgfältige Prüfung des Codes der animate2-Funktion zeigt:

Der Wert von 1.percentage kann größer als 1 sein, was gelöst werden kann, indem der Maximalwert durch Math.min begrenzt wird.
2. Selbst wenn garantiert ist, dass der Wert von „Prozent“ nicht größer als 1 ist, kann der Wert von „(endValue – startValue) * Prozentsatz“ dennoch zu Fehlern führen, solange „endValue“ oder „startValue“ eine Dezimalzahl ist, da die Genauigkeit von Javascript-Dezimaloperationen gering ist nicht genug. Tatsächlich möchten wir die Genauigkeit des Endwerts sicherstellen. Wenn der Prozentsatz also 1 ist, verwenden Sie endValue einfach direkt.

Der Code der Funktion animate2 wird also wie folgt geändert:

Code kopieren Der Code lautet wie folgt:

Funktion animate2(element, endValue, duration) {
var startTime = new Date(),
         startValue = parseInt(element.style.width);

var timerId = setInterval(function() {
​​​​ // Stellen Sie sicher, dass der Prozentsatz nicht größer als 1 ist
      var Prozentsatz = Math.min(1, (neues Datum – Startzeit) / Dauer);

var stepValue;
Wenn (Prozentsatz >= 1) {
​​​​​​ // Stellen Sie die Genauigkeit des Endwerts sicher
             stepValue = endValue;
         } sonst {
             stepValue = startValue (endValue - startValue) * Prozentsatz;
}
          element.style.width = stepValue 'px';

wenn (Prozentsatz >= 1) {
               clearInterval(timerId);
                element.innerHTML = neues Datum - startTime;
}
}, 13);
}

Es gibt noch eine letzte Frage: Warum ist das Intervall von setInterval auf 13 ms eingestellt? Der Grund dafür ist, dass die Bildwiederholfrequenz aktueller Monitore im Allgemeinen 75 Hz nicht überschreitet (d. h. 75 Mal pro Sekunde aktualisiert wird, d. h. alle etwa 13 ms aktualisiert wird). Es ist besser, das Intervall mit der Bildwiederholfrequenz zu synchronisieren.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Animation funktioniert in PowerPoint nicht [Behoben] Animation funktioniert in PowerPoint nicht [Behoben] Feb 19, 2024 am 11:12 AM

Versuchen Sie, eine Präsentation zu erstellen, können aber keine Animation hinzufügen? Wenn Animationen in PowerPoint auf Ihrem Windows-PC nicht funktionieren, hilft Ihnen dieser Artikel weiter. Dies ist ein häufiges Problem, über das sich viele Menschen beschweren. Beispielsweise kann es sein, dass Animationen bei Präsentationen in Microsoft Teams oder bei Bildschirmaufzeichnungen nicht mehr funktionieren. In diesem Leitfaden werden wir verschiedene Fehlerbehebungstechniken untersuchen, die Ihnen dabei helfen, Animationen zu beheben, die in PowerPoint unter Windows nicht funktionieren. Warum funktionieren meine PowerPoint-Animationen nicht? Wir haben festgestellt, dass einige mögliche Gründe dafür, dass die Animation in PowerPoint unter Windows nicht funktioniert, folgende sein können: Aus persönlichen Gründen

So richten Sie die PPT-Animation so ein, dass sie zuerst aufgerufen und dann beendet wird So richten Sie die PPT-Animation so ein, dass sie zuerst aufgerufen und dann beendet wird Mar 20, 2024 am 09:30 AM

Wir verwenden ppt häufig in unserer täglichen Arbeit. Sind Sie also mit allen Bedienfunktionen in ppt vertraut? Zum Beispiel: Wie werden Animationseffekte in ppt festgelegt, wie werden Umschalteffekte festgelegt und wie lang ist die Effektdauer jeder Animation? Kann jede Folie automatisch abgespielt werden, die PPT-Animation aufrufen und dann verlassen usw. In der heutigen Ausgabe werde ich Ihnen die spezifischen Schritte zum Aufrufen und Verlassen der PPT-Animation mitteilen. Schauen Sie sich diese an. 1. Zuerst öffnen wir ppt auf dem Computer und klicken außerhalb des Textfelds, um das Textfeld auszuwählen (wie im roten Kreis in der Abbildung unten dargestellt). 2. Klicken Sie dann in der Menüleiste auf [Animation] und wählen Sie den Effekt [Löschen] (wie im roten Kreis in der Abbildung dargestellt). 3. Klicken Sie anschließend auf [

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Nach einer zweijährigen Verzögerung soll der inländische 3D-Animationsfilm „Er Lang Shen: The Deep Sea Dragon' am 13. Juli in die Kinos kommen Nach einer zweijährigen Verzögerung soll der inländische 3D-Animationsfilm „Er Lang Shen: The Deep Sea Dragon' am 13. Juli in die Kinos kommen Jan 26, 2024 am 09:42 AM

Diese Website berichtete am 26. Januar, dass der inländische 3D-Animationsfilm „Er Lang Shen: The Deep Sea Dragon“ eine Reihe aktueller Standbilder veröffentlicht und offiziell angekündigt hat, dass er am 13. Juli in die Kinos kommen wird. Es wird davon ausgegangen, dass „Er Lang Shen: The Deep Sea Dragon“ von Mihuxing (Beijing) Animation Co., Ltd., Horgos Zhonghe Qiancheng Film Co., Ltd., Zhejiang Hengdian Film Co., Ltd., Zhejiang Gongying Film produziert wird Co., Ltd., Chengdu Der von Tianhuo Technology Co., Ltd. und Huawen Image (Beijing) Film Co., Ltd. produzierte und von Wang Jun inszenierte Animationsfilm sollte ursprünglich am 22. Juli 2022 auf dem chinesischen Festland erscheinen . Zusammenfassung der Handlung dieser Seite: Nach der Schlacht der verliehenen Götter nutzte Jiang Ziya die „Liste der verliehenen Götter“, um die Götter zu teilen, und dann wurde die Liste der verliehenen Götter vom himmlischen Gericht unter der Tiefsee von Kyushu versiegelt Geheimes Reich. Tatsächlich gibt es neben der Verleihung göttlicher Positionen auch viele mächtige böse Geister, die in der Liste der verliehenen Götter versiegelt sind.

Hayao Miyazakis Animationsfilm „Porco Rosso' wurde mit einem Douban-Score von 8,6 bis zum 16. Januar nächsten Jahres verlängert Hayao Miyazakis Animationsfilm „Porco Rosso' wurde mit einem Douban-Score von 8,6 bis zum 16. Januar nächsten Jahres verlängert Dec 18, 2023 am 08:07 AM

Laut Nachrichten dieser Website hat Hayao Miyazakis Animationsfilm „Porco Rosso“ angekündigt, das Erscheinungsdatum bis zum 16. Januar 2024 zu verlängern. Diese Website berichtete zuvor, dass „Porco Rosso“ im Special Line Cinema der National Art Federation gestartet wurde am 17. November, mit einer kumulierten Kinokasse von über 2.000 bis 10.000, einem Douban-Score von 8,6 und 85,8 % der 4- und 5-Sterne-Bewertungen. „Porco Rosso“ wurde von Studio Ghibli produziert und von Hayao Moriyama Moriyama, Tokiko Kato, Otsuka Akio, Okamura Akemi und anderen inszeniert. Es wurde ursprünglich 1992 in Japan veröffentlicht. Der Film basiert auf Hayao Miyazakis Comic „Das Zeitalter der Luftschiffe“ und erzählt die Geschichte des Spitzenpiloten der italienischen Luftwaffe, Pollock Rosen, der auf magische Weise in ein Schwein verwandelt wurde. Danach wurde er Kopfgeldjäger, kämpfte gegen Lufträuber und beschützte die Menschen um ihn herum. Inhaltsangabe: Rosen ist Soldat im Ersten Weltkrieg

Bester kostenloser KI-Animationskunstgenerator Bester kostenloser KI-Animationskunstgenerator Feb 19, 2024 pm 10:50 PM

Wenn Sie den besten kostenlosen Generator für KI-Animationskunst suchen, können Sie Ihre Suche beenden. Die Welt der Anime-Kunst fasziniert das Publikum seit Jahrzehnten mit ihren einzigartigen Charakterdesigns, faszinierenden Farben und fesselnden Handlungen. Allerdings erfordert die Erstellung von Anime-Kunst Talent, Geschick und viel Zeit. Dank der kontinuierlichen Weiterentwicklung der künstlichen Intelligenz (KI) können Sie jetzt mithilfe des besten kostenlosen KI-Animationskunstgenerators die Welt der Animationskunst erkunden, ohne sich mit komplexen Technologien befassen zu müssen. Dies eröffnet Ihnen neue Möglichkeiten, Ihrer Kreativität freien Lauf zu lassen. Was ist ein KI-Generator für Anime-Kunst? Der AI Animation Art Generator nutzt hochentwickelte Algorithmen und Techniken des maschinellen Lernens, um eine umfangreiche Datenbank mit Animationswerken zu analysieren. Durch diese Algorithmen lernt und identifiziert das System verschiedene Animationsstile

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

See all articles