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:
|
>>: Änderung des Zeitzonenproblems von MySQL-Containern in Docker
Fehlermeldung: Die Store-Update-, Insert- oder De...
Inhaltsverzeichnis Informationen zu WITH-Abfragen...
1. Abnormale Leistung beim Docker-Start: 1. Der S...
In diesem Artikel wird der Datenanzeigecode für d...
Schritt 1: Den aktuellen Kernel anzeigen rew $ un...
CocosCreator-Version: 2.4.2 Praktische Projektanw...
Ich habe einmal versprochen, dass ich so lange wei...
Finden Sie das Problem Als ich kürzlich die vorhe...
Inhaltsverzeichnis Was ist ein Index? Prinzip der...
Gegeben: Ein Array [1,8,5,4,3,9,2], schreiben Sie...
Konfigurieren Sie den Beschleuniger für den Docke...
Wie definiert man komplexe Komponenten (Klassenko...
Skriptanforderungen: Sichern Sie die MySQL-Datenb...
1. Ordner löschen Beispiel: rm -rf /usr/java Das ...
1. Testumgebung Name Version centos 7.6 Docker 18...