Heim Web-Frontend HTML-Tutorial So erzielen Sie einen Schneeeffekt in HTML5

So erzielen Sie einen Schneeeffekt in HTML5

May 17, 2018 pm 04:14 PM
h5 html5 方法

Verwenden Sie Leinwand, um einen Schneeeffekt zu erzielen:

Lassen Sie uns zuerst diesen Effekt analysieren:

1, zufällige Schneeflocken erzeugen

2, die Schneeflocken entstehen nicht gleichzeitig, sondern nacheinander

3. Wie schneit es kontinuierlich

5 ?Nachdem ich ein wenig

die oben genannten Probleme herausgefunden hatte, wurde dieser Effekt im Grunde realisiert

Da es sich um einen Vollbildeffekt handelt, habe ich dazu eine dynamisch erstellte Leinwand verwendet Zeigen Sie den gesamten Browser an. Weisen Sie der Leinwand die Breite und Höhe zu. Nach dem Aufruf der Init-Methode des oCanvas-Objekts wird eine Leinwand an das Ende des Körpers angehängt id ist Leinwand und die Breite und Höhe sind die gleichen wie die des Browsers. Die Breite und Höhe sind gleich, der Hintergrund ist schwarz, der Effekt von Schnee in der Nacht

Als nächstes gibt es eine Bühne. Es ist Zeit für die Schauspieler, auf die Bühne zu kommen. Wie erzeugt man Schneeflocken? Hier werden schneebezogene Operationen in einer Klasse gekapselt. Ihre Grundstruktur ist wie folgt:

var Canvas = function (w, h) {
                this.width = w;
                this.height = h;
            }
            Canvas.prototype = {
                init: function () {
                    var oC = document.createElement("canvas");
                    oC.setAttribute('width', this.width);
                    oC.setAttribute('height', this.height);
                    oC.setAttribute('id', 'canvas');
                    oC.style.backgroundColor = '#000';
                    document.body.appendChild(oC);
                }
            }
            var curWinWidth = window.innerWidth,
                curWinHeight = window.innerHeight;
            var oCanvas = new Canvas(curWinWidth, curWinHeight);
            oCanvas.init();
Nach dem Login kopieren
Diese Klasse verfügt über insgesamt drei Methoden (Init, Draw, Update).

init: Initialisiert die Position der Schneeflocke (x-, y-Koordinaten), die Geschwindigkeit und den Radius (die Größe der Schneeflocke, hier stellen wir die Schneeflocke mit Kreisen mit unterschiedlichen Radien dar)

var Snow = function(){}
Snow.prototype = {
  init : function(){},
  draw : function( cxt ) {},
  update : function(){}
}
Nach dem Login kopieren
Fügen Sie dann diese Zufallsfunktion zu init hinzu Schließen Sie die Initialisierung der Schneeflocken ab

1. Wenn Schneeflocken herauskommen, werden sie normalerweise oben auf dem Bildschirm angezeigt, sodass die y-Koordinaten der Schneeflocken alle 0 sind. Zweitens sind die x-Koordinaten der Schneeflocken zufällig. und ihr Bereich beträgt von links nach rechts auf dem Bildschirm 0 ~ Breite. Diese Breite ist die Breite der Leinwand, also die Breite des Browsers

2, und der Radius r des Schneeflocke ist auf einen beliebigen Wert zwischen 1 und 5 eingestellt.
function random(min, max) {
                return Math.random() * (max - min) + min;
            }
            init: function () {
                    this.x = random(0, width);
                    this.y = 0;
                    this.r = random(1, 5);
                    this.vy = random(3, 5);
                }
Nach dem Login kopieren

3 Die Fallgeschwindigkeit der Schneeflocken ist auf eine zufällige Geschwindigkeit zwischen 3 und 5 eingestellt. Der Schnee, den ich hier gemacht habe, fällt vertikal. Sie können den Einfluss erweitern und berücksichtigen des Windes (diesmal muss es eine horizontale Richtung geben) Geschwindigkeit)

Mit diesen Initialisierungsparametern verbessern wir die Zeichenmethode und zeichnen Schneeflocken:

Der Parameter cxt ist der Kontext des Diese Funktion ist sehr einfach. Der in init festgelegte Wert wird verwendet, um einen Kreis (Schneeflocke) zu zeichnen. Es aktualisiert die Geschwindigkeit der Schneeflocken in vertikaler Richtung

Bei der Aktualisierungsmethode treffen wir eine Grenzbeurteilung: Wenn die Schneeflocken nach unten fallen, werden sie definitiv verschwinden. Was tun, wenn die Grenze nicht erreicht wird?

draw: function (cxt) {
                    cxt.beginPath();
                    cxt.fillStyle = 'white';
                    cxt.arc(this.x, this.y + this.r, this.r, 0, Math.PI * 2, false);
                    cxt.fill();
                    cxt.closePath();
                    this.update(cxt);
                },
Nach dem Login kopieren
Die Höhe der Leinwand minus dem Radius der Schneeflocke. Dies ist die Grenze, wenn die Schneeflocke im Begriff ist zu verschwinden, also this.y < height - this.r Wenn diese Bedingung wahr ist, bedeutet dies, dass Die Schneeflocke schwebte und wir müssen die Position der Schneeflocke in y-Richtung aktualisieren. Die Schneeflocke sieht aus wie („es schneit“). Wenn eine Schneeflocke im Begriff ist zu verschwinden, verschieben wir sie in die Ausgangsposition. so dass es so aussieht, als würde es kontinuierlich im Kreis schneien, ohne die Schneeflocken neu zu zeichnen (wenn Sie dies tun, wird dies definitiv die Leistung beeinträchtigen und dieser Spezialeffekt wird am Ende definitiv hängen bleiben. Dieser kleine Trick wird von vielen ähnlichen verwendet Spezialeffekte). Zu diesem Zeitpunkt ist der Kernprozess abgeschlossen. Als nächstes werden wir eine große Anzahl von Schneeflocken erzeugen.

update: function (cxt) {
                    if (this.y < height - this.r) {
                        this.y += this.vy;
                    } else {
                        this.init();
                    }
                }
Nach dem Login kopieren
Generieren Sie 500 Schneeflocken, nicht gleichzeitig, und speichern Sie diese Schneeflocken dann im Array Schnee.

Starten Sie dann den Timer und lassen Sie die Schneeflocken weiter fallen,

Bezüglich der Verwendung von requestAnimationFrame können Sie sich auf diesen Artikel von mir beziehen: [JS Master's Road] HTML5s neuer Timer-RequestAnimationFrame-tatsächlicher Fortschrittsbalken
var snow = [];
            for (var i = 0; i < 500; i++) {
                setTimeout(function () {
                    var oSnow = new Snow();
                    oSnow.init();
                    snow.push(oSnow);
                }, 10 * i);
            }
Nach dem Login kopieren

Vollständiger Democode:

Das obige ist der detaillierte Inhalt vonSo erzielen Sie einen Schneeeffekt in HTML5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles