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

Implementierung der MySQL-Dezimaldatentypkonvertierung

Kürzlich stieß ich auf eine Datenbank mit folgend...

Manuelle Implementierung des bidirektionalen Datenbindungsprinzips von Vue2.0

In einem Satz: Datenentführung (Object.defineProp...

Detaillierter Prozess der Installation von nginx1.9.1 auf centos8

1.17.9 Wirklich leckerer Nginx-Download-Adresse: ...

Wie können die Transaktionseigenschaften von MySQL InnoDB sichergestellt werden?

Vorwort Wenn Sie jemand fragt: „Was sind die Merk...

Zusammenfassung einiger meiner häufig verwendeten Linux-Befehle

Ich habe zwei Jahre lang im Betrieb und in der Wa...

4 Möglichkeiten zum Ändern des MySQL-Root-Passworts (Zusammenfassung)

Methode 1: Verwenden Sie den Befehl SET PASSWORD ...

CSS erzielt den Effekt der Vermischung zweier Elemente (Sticky-Effekt)

Ich erinnere mich, dass es vor ein paar Jahren in...

Lösung für den Fehler bei der Verbindung mit MySQL in Docker

Szenario: Nach der Installation der neuesten Vers...

Grundlegendes Einführungstutorial zu MySQL-Partitionstabellen

Vorwort In einem aktuellen Projekt mussten wir ei...

vue + ts realisiert den Effekt des Ziehens von Elementen mit der Maus

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung der Verwendung des chmod-Befehls in Linux

chmod-Befehlssyntax Dies ist die korrekte Syntax ...

jQuery implementiert Akkordeon-Kleinbuchstaben

Dieser Artikel gibt Ihnen den spezifischen Code v...

Die vue-cli-Konfiguration verwendet den vollständigen Prozessdatensatz von Vuex

Inhaltsverzeichnis Vorwort Installation und Verwe...