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 steuernFunktion 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 MeteorhalosFunktion 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. MeteorschweifFunktion 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ändigenFunktion 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:
|
<<: Detaillierte Schritte zur Installation von Python 3.7 auf CentOS 6.5
1. Umweltvorbereitung Die IP-Adresse jedes Contai...
1. Fügen Sie den Isolationsmarker hinzu: ip netns...
Inhaltsverzeichnis Boolescher Typ Nummerntypen Ze...
Code kopieren Der Code lautet wie folgt: <html...
/****************** * Kernel-Debugging-Technologi...
Der Vorteil der Master-Slave-Synchronisierungskon...
Seurat ist ein umfangreiches R-Paket für die Einz...
Inhaltsverzeichnis Vorwort Kommunikation zwischen...
NAT Auf diese Weise wird die Netzwerkkarte der vi...
Inhaltsverzeichnis 1. Allgemeine Funktionsklassif...
Inhaltsverzeichnis Überblick Einzelne Dateikompon...
1. Docker mountet das lokale Verzeichnis Docker k...
Wenn nginx proxy_pass konfiguriert, ist der Unter...
Vorwort Im Entwicklungsprozess ist das Definieren...
MySQL 8.0.22 Download-, Installations- und Konfig...