JavaScript-Canvas zum Erzielen von Meteoreffekten

JavaScript-Canvas zum Erzielen von Meteoreffekten

In diesem Artikel wird der spezifische Code für JavaScript-Canvas zur Anzeige von Meteor-Spezialeffekten zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

1. Transparenzänderungsfunktion steuern

Funktion easeInQuad(aktuelle Zeit, Beginn, Ende, Dauer){
            let x = curtime/duration; //x-Wertlet y = x*x; //y-Wertreturn begin+(end-begin)*y; //füge die ursprüngliche Formel ein}
        //Kernfunktion der langsamen Verzögerungsbewegung, konstruiert mit der Quadratwurzel: x*x + 2*x
Funktion easeOutQuad(aktuelle Zeit, Beginn, Ende, Dauer){
            let x = curtime/duration; //x-Wertlet y = -x*x + 2*x; //y-Wertreturn begin+(end-begin)*y; //füge die ursprüngliche Formel ein}
Funktion easeInoutQuad(aktuelle Zeit, Beginn, Ende, Dauer){
            if(curtime<duration/2){ //Erste Hälfte der Zeit return easeInQuad(curtime,begin,(begin+end)/2,duration/2); //Änderungsbetrag und Zeit werden durch 2 geteilt
            }anders{
                let curtime1 = curtime-duration/2; //Beachten Sie, dass die Zeit von der ersten Hälfte abgezogen werden sollte let begin1 = (begin+end)/2; //Die Anfangsmenge sollte zur in der ersten Hälfte abgeschlossenen Menge addiert werden return easeOutQuad(curtime1,begin1,end,duration/2); //Die Änderungsmenge und die Zeit werden durch 2 geteilt
            }
}

2. Blitzeffekte des Meteorhalos

Funktion IntervallOpcity (aktuell=0,Start=0,3,Ende=0,8,Dauer=3) {
            wenn (fadeOpcity(aktuell,Start,Ende,Dauer)===Ende){
                aktuell = 0
                lass temp = start
                Anfang = Ende 
                Ende = temp
            }
            let opcity = fadeOpcity(aktuell,Start,Ende,Dauer)
            lass Farbe = `rgba(0,0,0,${opcity})`
            Hintergrundfarbe löschen (Umbruch)
            neuesPartikel (Wrap, [x, y], r, Farbe)
            aktuell = parseFloat(aktuell + 0,1)
            setTimeout(()=>{Intervallbetrieb (aktuell,Start,Ende,Dauer)},33)
}

3. Meteorschweif

Funktion IntervallBewegung (Geschwindigkeit,g=0) {
            wenn(g===720){
                g = 360
            }
            g = g + Geschwindigkeit
            let nächstePosition = movePosition(a,g,startPosition)
            x = nächstePosition[0]
            y = nächstePosition[1]
            Hintergrundfarbe löschen(Wrap1)
            für (lass i =1;i<=360;i++){
                sei g1 = gi/2
                wenn(g1<0&&g<=360){
                    brechen
                }
                let g1Position = movePosition (a, g1, startPosition)
                neuesPartikel (Wrap1, [g1Position[0], g1Position[1]], r/(1+i/5),`rgba(255,200,200,0,5)`)
            }
            setTimeout(()=>{Intervallbewegung (Geschwindigkeit,g)},33)
        }

4. Code vervollständigen

Funktion easeInQuad(aktuelle Zeit, Beginn, Ende, Dauer){
            let x = curtime/duration; //x-Wertlet y = x*x; //y-Wertreturn begin+(end-begin)*y; //füge die ursprüngliche Formel ein}
        //Kernfunktion der langsamen Verzögerungsbewegung, konstruiert mit der Quadratwurzel: x*x + 2*x
        Funktion easeOutQuad(aktuelle Zeit, Beginn, Ende, Dauer){
            let x = curtime/duration; //x-Wertlet y = -x*x + 2*x; //y-Wertreturn begin+(end-begin)*y; //füge die ursprüngliche Formel ein}
        Funktion easeInoutQuad(aktuelle Zeit, Beginn, Ende, Dauer){
            if(curtime<duration/2){ //Erste Hälfte der Zeit return easeInQuad(curtime,begin,(begin+end)/2,duration/2); //Änderungsbetrag und Zeit werden durch 2 geteilt
            }anders{
                let curtime1 = curtime-duration/2; //Beachten Sie, dass die Zeit von der ersten Hälfte abgezogen werden sollte let begin1 = (begin+end)/2; //Die Anfangsmenge sollte zur in der ersten Hälfte abgeschlossenen Menge addiert werden return easeOutQuad(curtime1,begin1,end,duration/2); //Die Änderungsmenge und die Zeit werden durch 2 geteilt
            }
        }
        Funktion newCanvas (Breite,Höhe) {
            let bodyEl = Dokument.body
            let canvasEl = document.createElement("canvas")
            canvasEl.width = Breite
            canvasEl.height = Höhe
            canvasEl.style.position = "absolut"
            bodyEl.anhängen(canvasEl)
            let wrap = canvasEl.getContext("2d")
            Rücksendeverpackung
        }
        Funktion setBgcolor (Wrap, Farbe) {
            Wrap.Füllstil=Farbe;
            wrap.fillRect(0,0,wrap.canvas.Breite,wrap.canvas.Höhe);
        }
        Funktion Hintergrundfarbe löschen(Umbruch){
            Wrap.ClearRect(0,0,Wrap.Canvas.Breite,Wrap.Canvas.Höhe)
        } 
        Funktion neuesPartikel(Wrap,Position,r,Farbe) {
            sei x = Position[0]
            sei y = Position[1]
            Wrap.Füllstil=Farbe;
            } wrap.beginPath();
            Wrap.Arc(x,y,r,0,2*Math.PI);
            Wrap.Schattenunschärfe = 20;
            wrap.shadowColor=`rgba(255,255,255,0.8)`;
            umbrechen.füllen();
        }
        Funktion fadeOpcity(aktuell,Start,Ende,Dauer){
            let opcity = parseFloat(easeInoutQuad(aktuell,start,end,dur).toFixed(2)) 
            Rückgabeoption
        }
       let wrap0 = newCanvas(1000,800)
       let wrap2 = newCanvas(1000,800)
       let wrap = neueLeinwand(1000,800)
       let wrap1 = newCanvas(1000,800)
       
        setBgcolor (Wrap0, "schwarz")
        setBgcolor (Umbruch,"rgba(0,0,0,0)")
        setBgcolor (Wrap1, "rgba (0,0,0,0)")
        setBgcolor (Wrap2, "rgba (0,0,0,0)")
        let startPosition = [500,200]
        sei r = 10
        sei a = -200
        sei x = a*(1-Math.cos(0))*Math.sin(0)+startPosition[0]
        sei y = a*(1-Math.cos(0))*Math.cos(0)+startPosition[1]
        Funktion Verschiebeposition (a,g,Startposition) {
            sei t = Math.PI*2/360
            sei x = a*(1-Math.cos(g*t))*Math.sin(g*t)+startPosition[0]
            sei y = a*(1-Math.cos(g*t))*Math.cos(g*t)+startPosition[1]
            Rückgabewert [x,y]
        }
        Funktion IntervallBewegung (Geschwindigkeit,g=0) {
            wenn(g===720){
                g = 360
            }
            g = g + Geschwindigkeit
            let nächstePosition = movePosition(a,g,startPosition)
            x = nächstePosition[0]
            y = nächstePosition[1]
            Hintergrundfarbe löschen(Wrap1)
            für (lass i =1;i<=360;i++){
                sei g1 = gi/2
                wenn(g1<0&&g<=360){
                    brechen
                }
                let g1Position = movePosition (a, g1, startPosition)
                neuesPartikel (Wrap1, [g1Position[0], g1Position[1]], r/(1+i/5),`rgba(255,200,200,0,5)`)
            }
            setTimeout(()=>{Intervallbewegung (Geschwindigkeit,g)},33)
        }

        Funktion IntervallOpcity (aktuell=0,Start=0,3,Ende=0,8,Dauer=3) {
            wenn (fadeOpcity(aktuell,Start,Ende,Dauer)===Ende){
                aktuell = 0
                lass temp = start
                Anfang = Ende 
                Ende = temp
            }
            let opcity = fadeOpcity(aktuell,Start,Ende,Dauer)
            lass Farbe = `rgba(0,0,0,${opcity})`
            Hintergrundfarbe löschen (Umbruch)
            neuesPartikel (Wrap, [x, y], r, Farbe)
            aktuell = parseFloat(aktuell + 0,1)
            setTimeout(()=>{Intervallbetrieb (aktuell,Start,Ende,Dauer)},33)
        }
IntervallOpcity()
IntervallBewegung (1)

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:
  • JavaScript + HTML5-Canvas zum Erzielen von Bildfragmentierungs- und Reorganisationsanimationseffekten
  • js canvas realisiert Sternenhimmel-Hintergrundeffekt
  • js Canvas realisiert zufällige Partikeleffekte
  • Bringen Sie Ihnen bei, Dutzende von Zeilen JS zu verwenden, um coole interaktive Canvas-Effekte zu erzielen

<<:  Detaillierte Schritte zur Installation von Python 3.7 auf CentOS 6.5

>>:  Detaillierte Erläuterung der Verwendung der integrierten Funktion „locate instr position find_in_set“ in der effizienten Fuzzy-Suche von MySQL

Artikel empfehlen

Zusammenfassung eines CSS-Codes, der die gesamte Site grau macht

Um den Märtyrern und Opfern des Kampfes gegen die...

Vue implementiert ein verschiebbares Baumstrukturdiagramm

Inhaltsverzeichnis Rekursive Vue-Komponente Drag-...

JS implementiert Städtelisteneffekt basierend auf VUE-Komponente

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung der Mixins in Vue.js

Mixins stellen auf flexible Weise verteilte, wied...

Installation und Daemon-Konfiguration von Redis unter Windows und Linux

# Installations-Daemon-Konfiguration für Redis un...

Vertikales und horizontales Aufteilen von MySQL-Tabellen

Vertikale Teilung Vertikale Aufteilung bezieht si...

Datendiebstahl mit CSS in Firefox

0x00 Einführung Vor einigen Monaten habe ich eine...

CSS-Rand halb oder teilweise sichtbarer Implementierungscode

1. Verwenden Sie Pseudoklassen, um die Hälfte des...

Beispielcode für HTML-Listenfeld, Textfeld und Dateifeld

Dropdown-Feld, Textfeld, Dateifeld Der obere Teil...