In diesem Artikelbeispiel wird der spezifische Code von Canvas zur Realisierung einer kreisförmigen Wasseranimation als Referenz bereitgestellt. Der spezifische Inhalt ist wie folgt VorwortAnzeige von Spezialeffekten EffektanzeigeCode-SchaufensterHauptseite <!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="UTF-8"> <meta http-equiv="X-UA-kompatibel" content="IE=edge"> <meta name="viewport" content="width=Gerätebreite, Anfangsmaßstab=1.0"> <title>Dokument</title> <!-- <link rel="stylesheet" href="style.css" > --> </Kopf> <Text> <script src="main.js"></script> </body> </html> Haupt-JS /* * Noel Delgado - @pixelia_me */ (Funktion() { var ctx, w, h, cx, cy, PI, PI_HALF, cos, sin, zufällig, Linienbreite, C, Ringe, Ringlänge, Daten; ctx = document.createElement('canvas').getContext('2d'); b = 600; h = 600; cx = (w / 2); cy = (h / 2); Ringe = []; RingeLänge = 0; PI = Math.PI; PI_HALB = PI / 2; cos = Math.cos; sin = Math.sin; zufällig = Math.zufällig; Linienbreite = 0,2; C = ["#ABF8FF", "#E76B76", "#1D2439", "#4F3762", "#67F9FF", "#0C0F18"]; Daten = [ /* Ring {t:Gesamtpartikel, r:Radius, d:Entfernung, s:Geschwindigkeit, c:Farbe} */ [ {t:80, r:(cx-10), d:40, s:30, c:C[1]}, {t:60, r:(cx-20), d:40, s:80, c:C[2]}, {t:20, r:(cx-30), d:20, s:80, c:C[2]}, ], [ {t:80, r:(cx-80), d:40, s:40, c:C[4]}, {t:80, r:(cx-90), d:20, s:40, c:C[4]}, {t:20, r:(cx-100), d:20, s:40, c:C[2]}, {t:40, r:(cx-110), d:20, s:40, c:C[2]}, ], [ {t:60, r:(cx-160), d:40, s:20, c:C[2]}, {t:20, r:(cx-170), d:30, s:60, c:C[2]}, {t:40, r:(cx-180), d:40, s:60, c:C[2]}, ], [ {t:40, r:(cx-230), d:40, s:20, c:C[5]}, {t:20, r:(cx-240), d:20, s:10, c:C[5]}, ], [ {t:10, r:(cx-290), d:10, s:10, c:C[4]} ] ]; /* */ ctx.canvas.width = b; ctx.canvas.height = h; Dokument.Body.AnhängenUntergeordnetesElement(ctx.canvas); data.forEach(Funktion(Gruppe) { var ring = []; Gruppe.fürJedes(Funktion(Orbit, i) { var Gesamtpartikel, Index; Gesamtpartikel = Umlaufbahn.t; Index = 0; für (; index < total_particles; index++) { var Radius, Entfernung, Geschwindigkeit, Farbe, Opazität; Radius = Umlaufbahn.r; Entfernung = Umlaufbahn.d; Geschwindigkeit = zufällig() / Umlaufbahn.s; Geschwindigkeit = i % 2? Geschwindigkeit : Geschwindigkeit * -1; Farbe = orbit.c; Opazität = orbit.o; ring.push(neues P(Radius, Entfernung, Geschwindigkeit, Farbe, Deckkraft)); Radius = Entfernung = Geschwindigkeit = Farbe = Deckkraft = null; } }); Ringe.drücken(Ring); }); RingeLänge = Ringe.Länge; /* */ Funktion P(Radius, Entfernung, Geschwindigkeit, Farbe) { dies.a = PI / 180; this.d = Entfernung; dies.d2 = (dieses.d * dies.d); dies.x = cx + radius * cos(dies.a); dies.y = cy + radius * sin(dies.a); dies.c = Farbe; dies.r = (random() * 8); dies.R = random() > 0,5? Radius: Radius - 5; this.s = Geschwindigkeit; diese.pos = random() * 360; } Funktion zeichnen() { var i, j, k, xd, yd, d, Ring, Ringlänge, Ringlänge2, Partikel, p2; ctx.beginPath(); ctx.globalCompositeOperation = "Quelle-over"; ctx.rect(0, 0, b, h); ctx.fillStyle = "#151a28"; ctx.fill(); ctx.closePath(); für (i = 0; i < Ringlänge; i++) { ring = Ringe[i]; Ringlänge = Ringlänge; Ringlänge2 = Ringlänge - 100; für (j = 0; j < Ringlänge; j++) { Teilchen = Ring[j]; Partikel.x = cx + Partikel.R * sin(PI_HALF + Partikel.pos); Partikel.y = cy + Partikel.R * cos(PI_HALF + Partikel.pos); Partikel.pos += Partikel.s; ctx.beginPath(); ctx.globalAlpha = 0,12; ctx.globalCompositeOperation = "leichter"; ctx.fillStyle = Partikel.c; ctx.arc(Partikel.x, Partikel.y, Partikel.r, PI * 2, falsch); ctx.fill(); ctx.closePath(); für (k = 0; k < Ringlänge2; k++) { p2 = Ring[k]; yd = p2.y - Teilchen.y; xd = p2.x - Teilchen.x; d = ((xd * xd) + (yd * yd)); wenn (d < Partikel.d2) { ctx.beginPath(); ctx.globalAlpha = 1; ctx.lineWidth = Linienbreite; ctx.moveTo(Partikel.x, Partikel.y); ctx.lineTo(p2.x, p2.y); ctx.strokeStyle = p2.c; ctx.stroke(); ctx.closePath(); } } } } } Funktion Schleife() { ziehen(); requestAnimationFrame(Schleife); } Schleife(); })(); 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:
|
<<: Verwenden Sie die Befehle more, less und cat in Linux, um Dateiinhalte anzuzeigen
>>: MySQL-Optimierung: Join statt Unterabfrage verwenden
Vorwort: MYSQL dürfte die beliebteste WEB-Backend...
1. Was ist ein virtueller Host? Virtuelle Hosts v...
Inhaltsverzeichnis Einführung MySQL-Hochverfügbar...
1. Reproduktion des Problems: Zählen Sie die Gesa...
Inhaltsverzeichnis 1. Bilder 1. Was ist ein Spieg...
Szenario: Wenn Seite A Seite B öffnet, muss Seite...
Szenario Eine aktuelle Anforderung ist eine h5-Se...
Vorwort JavaScript erfreut sich weiterhin wachsen...
Inhaltsverzeichnis Vorwort 1. Laden Sie MySQL 8.0...
Konfigurieren Sie mehrere Server in nginx.conf: B...
Einführung: Im Vergleich zu herkömmlichen Bildver...
1. Was ist Semantisierung? Erklärung zum Bing-Wör...
Voraussetzung: Mac, zsh installiert, mysql herunt...
Unterabfrageklassifizierung Klassifizierung nach ...
Inhaltsverzeichnis Vorwort 1. Was ist Skalierbark...