js, um einen coolen Feuerwerkseffekt zu erzielen

js, um einen coolen Feuerwerkseffekt zu erzielen

In diesem Artikel finden Sie den spezifischen Code für die Verwendung von js zum Erzielen cooler Feuerwerkseffekte als Referenz. Der spezifische Inhalt ist wie folgt

Wir müssen die Grundidee des gesamten Prozesses klären.

Erstellen Sie zunächst eine Leinwand, um die Wirkung des Feuerwerks darzustellen, und denken Sie dann über den Ablauf des Feuerwerks nach. Wir alle wissen, dass Feuerwerke normalerweise zuerst in den Himmel fliegen und sich dann in viele kleine Feuerwerke auflösen, und jedes kleine Feuerwerk hat einen anderen Stil und eine andere Bewegung.

Die Grundidee besteht darin, zunächst ein Div als unser großes Feuerwerk zu erstellen. Wenn sich das große Feuerwerk an die Stelle bewegt, an der wir mit der Maus geklickt haben, verschwindet das große Feuerwerk und dann werden weitere kleine Feuerwerke erzeugt. Die Bewegungsbahnen dieser kleinen Feuerwerke sind unterschiedlich.

1. Erstellen Sie eine Leinwand (div), um den Effekt des Feuerwerks anzuzeigen

/*Legen Sie den CSS-Stil für die Leinwand fest*/
#Behälter {
        Breite: 80%;
        Höhe: 600px;
        Rand: 1px rot durchgezogen;
        Position: relativ;
        Rand: 20px automatisch;
        Cursor: Zeiger;
        Hintergrund: schwarz;
    }
<!-- Ein Div einrichten -->
<div id="Container"></div>

2. Holen Sie sich den Knoten

 //Knoten abrufen var app = document.getElementById('container');
        //Legen Sie ein Bindungsereignis für die App fest app.onclick = function(event) {
                var e = Ereignis || Fenster.Ereignis
               //Holen Sie sich die Koordinaten der Mausklickposition var pos = {
                    cy: e.offsetY,
                    cx: e.offsetX
                }
                neues Feuer (App, Pos)
            }

Der Prozess der Realisierung eines Feuerwerks: Realisieren Sie zuerst ein großes Div, das sich an die Position bewegt, an der mit der Maus geklickt wird, und verteilen Sie es dann auf viele Divs

3. Implementieren Sie zuerst das große Feuerwerk (Sie müssen die Zufallszahlenmethode, die Zufallsfarbmethode und die Bewegungsfunktion aufrufen).

// Konstruktorfunktion Fire(app, pos) {
            //Setze die Eigenschaft auf die Variable this.app = app;
            dies.pos = pos;
            // Erstelle ein großes div
            dies.bf = Dokument.createElement('div');
            //Einen Klassennamen festlegen this.bf.className = 'fire';
            //Stil festlegen this.bf.style.left = this.pos.cx + 'px';
            dies.bf.style.background = dies.getColor();
            diese.app.appendChild(diese.bf);
            //Rufen Sie die Bewegungsfunktion this.move(this.bf, {
                oben: this.pos.cy
            }, () => {
                dies.bf.entfernen();
                dies.smallFire();
            })
        }

3.1 Stellen Sie zuerst den Stil des Feuers ein

Dies ist die ursprüngliche Art des Feuers

 .Feuer {
        Hintergrund: rot;
        Position: absolut;
        /* Beim Festlegen von „unten“ ergibt sich „oben“ als Maximalwert abzüglich der Mausklickposition*/
        unten: 0px;
        Breite: 6px;
        Höhe: 6px;
    }

3.2 Methode zum Einstellen einer Zufallszahl und einer Zufallsfarbe (Prototypobjekt)

//Eine Zufallszahl abrufen Methode Fire.prototype.rand = function(min, max) {
            gibt Math.round(Math.random() * (max - min) + min) zurück;
        }
 
 
//Methode um eine zufällige Farbe zu erhalten Fire.prototype.getColor = function() {
         sei Summe = '#';
         für (sei i = 0; i < 6; i++) {
               Summe += this.rand(0, 15).toString(16)
           }
             Rücklaufsumme;
           }

3.3 Kapselung einer Bewegungsfunktion (Prototypobjekt)

Fire.prototype.move = Funktion(Element, Ziel, cb) {
                // Intervall löschen(Zeiten);
                let times = setIntervall(Funktion() {
                    // konsole.log(dies);
                    var einAus = true;
                    // Durchlaufe die Richtung und das Ziel der Bewegung for (let attr in target) {
                        // attr stellt das Attribut der Bewegung dar // console.log(attr);
                        // Den Echtzeitwert des Elementattributs abrufen let tmpVal = parseInt(this.getPos(ele, attr))
                            // Geschwindigkeit berechnen
                            // konsole.log(tmpVal, attr);
                        lass Geschwindigkeit = (Ziel[attr] – tmpVal) / 10;
                        // Rundengeschwindigkeit = Geschwindigkeit > 0 ? Math.ceil(Geschwindigkeit) : Math.floor(Geschwindigkeit);
                        // Stoppen Sie den Timer, wenn sich ein Attribut an die Position bewegt, und setzen Sie den Schalterzustand, wenn (tmpVal == target[attr]) onOff = true;
                        // Das Element bewegen ele.style[attr] = tmpVal + speed + 'px';
                    }
 
                    // Bestimmen Sie den Schalterstatus und löschen Sie den Timer für (var moveAttr in target) {
                        // Wenn sie nicht gleich sind, bedeutet das, dass einige Attribute nicht an die Position bewegt wurden und der Timer nicht gestoppt werden kann, if (target[moveAttr] !== parseInt(this.getPos(ele, moveAttr))) {
                            einAus = falsch;
                            brechen;
                        }
                    }
                    wenn (einAus) {
                        clearInterval(Zeiten);
                        cb und cb();
                    }
                    // konsole.log(1111);
                }.binden(dies), 30)
            }
            // Funktion zum Abrufen der Echtzeitposition eines Elements Fire.prototype.getPos = function(obj, attr) {
            if (obj.currentStyle) { // CSS-Stil abrufen return obj.currentStyle[attr];
            } anders {
                gibt getComputedStyle(Objekt)[Attr] zurück
            }
        }

Durch die obigen Schritte können wir die Bewegungsbahn des großen Feuerwerks ermitteln. Nachdem sich das große Feuerwerk an die angegebene Position bewegt hat, verschwindet es und an der Stelle, an der es verschwindet, werden viele kleine Feuerwerke erzeugt. Aus der vorherigen Analyse können wir erkennen, dass die Bewegungsbahnen und -stile von kleinen Feuerwerken unterschiedlich sind. Der nächste Schritt besteht darin, kleine Feuerwerke zu realisieren.

4. Durchführung von Kleinfeuerwerk

4.1 Festlegen des Stils von samll-fire

Dies ist die ursprüngliche Eigenschaft von samll-fire

.kleines Feuer {
        Breite: 10px;
        Höhe: 10px;
        Position: absolut;
        Randradius: 50 %;
    }

4.2 Eigenschaften des kleinen Feuerwerks festlegen

//Kleines Feuerwerk Fire.prototype.smallFire = function() {
            //Zuerst legen wir die Anzahl der kleinen Feuerwerke fest let num = this.rand(50, 60)
            //Durchlaufe und lege für jedes kleine Feuerwerk einen anderen Stil fest for (let i = 0; i < num; i++) {
                Lassen Sie sf = document.createElement('div');
                sf.className = "kleines Feuer";
                sf.style.left = diese.pos.cx + 'px';
                sf.style.top = diese.pos.cy + 'px';
                sf.style.background = this.getColor();
                //Konsole.log(sf);
                //An die Seite anhängen this.app.appendChild(sf);
                //Die Flugbahn des kleinen Feuerwerks in eine Kreisbewegung umwandeln//var top = parseInt(Math.sin(Math.PI / 180 * 360 / num * i) * r) + this.pos.cy;
                //var links = parseInt(Math.cos(Math.PI / 180 * 360 / num * i) * r) + this.pos.cx;
                 //Geben Sie dem kleinen Feuerwerk eine zufällige Position, die jede beliebige Position auf der Leinwand sein kann. let top = this.rand(0, this.app.offsetHeight - sf.offsetHeight);
                 let left = this.rand(0, this.app.offsetWidth - sf.offsetWidth);
                //Rufen Sie die Bewegungsfunktion this.move(sf, {
                    oben: oben,
                    links: links
                }, Funktion() {
                    sf.entfernen();
                })
            }
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • js-Simulation zum Erzielen von Feuerwerkseffekten
  • Natives JS zum Erzielen eines Feuerwerkeffekts
  • Sehr schöner js Feuerwerkseffekt
  • js, um einen Klick-Feuerwerk-Effekt zu erzielen
  • JavaScript zum Erzielen von Feuerwerkseffekten (objektorientiert)
  • JavaScript implementiert Feuerwerkseffekte mit Soundeffekten
  • JavaScript implementiert fünf verschiedene Feuerwerkseffekte

<<:  MySQL verwendet gespeicherte Prozeduren, um die Methode zur Erfassung von Baumknoten zu implementieren

>>:  Änderung des Zeitzonenproblems von MySQL-Containern in Docker

Artikel empfehlen

So verkleinern Sie die Protokolldatei in MYSQL SERVER

Das Transaktionsprotokoll zeichnet die Vorgänge a...

Vue-CLI - Aufzeichnung der Schritte zur mehrseitigen Verzeichnisverpackung

Seitenverzeichnisstruktur Beachten Sie, dass Sie ...

So ändern Sie schnell die Tabellenstruktur einer MySQL-Tabelle

Tabellenstruktur einer MySQL-Tabelle schnell ände...

Detaillierte Erklärung der Verwendung von overflow:auto

Bevor ich mit dem Haupttext beginne, werde ich ei...

Detaillierte Erklärung der Lösung für das Nginx-Panikproblem

In Bezug auf das Nginx-Panikproblem müssen wir zu...

SQL-Implementierung von LeetCode (178. Punkterangliste)

[LeetCode] 178.Ranglistenergebnisse Schreiben Sie...

Zusammenfassung zum Erstellen und Verwenden von Array-Methoden in Bash-Skripten

Definieren eines Arrays in Bash Es gibt zwei Mögl...

Gestaltung von Popup-Fenstern und schwebenden Ebenen im Webdesign

Im Zuge des schrittweisen Übergangs von herkömmli...

30 hervorragende Beispiele für Farbabstimmung im Webdesign

Heute habe ich in diesem Artikel 30 hervorragende ...

Vue implementiert scrollbaren Popup-Fenstereffekt

In diesem Artikel wird der spezifische Code von V...

Forschung zur Größe von Webseiten

<br />Statistiken zufolge hat sich die durch...

Implementierung von MySQL-indexbasierten Stresstests

1. Datenbankdaten simulieren 1-1 Datenbank- und T...