In diesem Artikel wird der spezifische Code von jQuery zur Erzielung dynamischer Partikeleffekte zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt Rendern Code <!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> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> <div id="jsi-particle-container" class="container"></div> <Stil> html, Körper { Breite: 100 %; Höhe: 100%; Rand: 0; Polsterung: 0; Überlauf: versteckt; } .container { Breite: 100 %; Höhe: 100%; Rand: 0; Polsterung: 0; Hintergrundfarbe: #000000; } </Stil> </Kopf> <Text> <Skript> var RENDERER = { TEILCHENANZAHL: 1000, PARTIKELRADIUS: 1, MAX_ROTATION_ANGLE: Math.PI / 60, ÜBERSETZUNGSANZAHL: 500, init: Funktion (Strategie) { this.setParameters(Strategie); dies.createParticles(); dies.setupFigure(); diese.reconstructMethod(); this.bindEvent(); dies.drawFigure(); }, setParameters: Funktion(Strategie) { dies.$window = $(window); dies.$container = $('#jsi-particle-container'); diese.Breite = diese.$container.Breite(); diese.Höhe = diese.$container.Höhe(); dies.$canvas = $('<canvas />').attr({ Breite: diese.Breite, Höhe: diese.Höhe }).appendTo(diesen.$container); dies.Kontext = dies.$canvas.get(0).getContext('2d'); dies.center = { x: diese.Breite / 2, y: diese.Höhe / 2 }; dies.rotationX = dies.MAX_ROTATION_ANGLE; dies.rotationY = dies.MAX_ROTATION_ANGLE; dieser.StrategieIndex = 0; diese.Übersetzungsanzahl = 0; dies.theta = 0; diese.strategien = strategie.getStrategies(); diese.partikel = []; }, Partikel erstellen: Funktion() { für (var i = 0; i < this.PARTICLE_COUNT; i++) { this.particles.push(neues TEILCHEN(this.center)); } }, Rekonstruktionsmethode: Funktion () { dies.setupFigure = dies.setupFigure.bind(dies); dies.drawFigure = dies.drawFigure.bind(dies); dies.changeAngle = dies.changeAngle.bind(dies); }, bindEvent: Funktion() { dies.$container.on('klicken', dies.setupFigure); dies.$container.on('Mausbewegung', dies.changeAngle); }, Winkel ändern: Funktion(Ereignis) { var offset = this.$container.offset(), x = event.clientX - offset.links + this.$window.scrollLeft(), y = event.clientY - offset.oben + this.$window.scrollTop(); diese.rotationX = (diese.Mitte.y - y) / diese.Mitte.y * diese.MAX_ROTATION_ANGLE; diese.rotationY = (diese.Mitte.x - x) / diese.Mitte.x * diese.MAX_ROTATION_ANGLE; }, setupFigure: Funktion() { für (var i = 0, Länge = diese.Partikel.Länge; i < Länge; i++) { diese.Partikel[i].setAxis(diese.Strategien[dieser.StrategieIndex]()); } wenn (++dieser.StrategieIndex == diese.Strategien.Länge) { dieser.StrategieIndex = 0; } diese.Übersetzungsanzahl = 0; }, zeichneAbbildung: function() { AnfrageAnimationFrame(diese.drawFigure); this.context.fillStyle = "rgba(0, 0, 0, 0,2)"; dieser.Kontext.fillRect(0, 0, diese.Breite, diese.Höhe); für (var i = 0, Länge = diese.Partikel.Länge; i < Länge; i++) { var Achse = diese.Partikel[i].getAxis2D(diese.Theta); dieser.Kontext.beginPath(); this.context.fillStyle = Achse.Farbe; this.context.arc(Achse.x, Achse.y, this.PARTICLE_RADIUS, 0, Math.PI * 2, false); dies.Kontext.füllen(); } dies.theta++; dies.theta %= 360; für (var i = 0, Länge = diese.Partikel.Länge; i < Länge; i++) { diese.Partikel[i].rotateX(diese.RotationX); diese.Partikel[i].rotateY(diese.RotationY); } dies.translationCount++; diese.Übersetzungsanzahl %= diese.TRANSLATION_COUNT; wenn (this.translationCount == 0) { dies.setupFigure(); } } }; var STRATEGIE = { Streuradius: 150, KEGEL_ASPEKT_VERHÄLTNIS: 1,5, RING_COUNT: 5, getStrategies: Funktion() { var Strategien = []; für (var i in diesem) { wenn (dies[i] == argumente.callee || Typ von diesem[i] != 'Funktion') { weitermachen; } Strategien.push(dies[i].binden(dies)); } Rückgabestrategien; }, createSphere: Funktion() { var cosTheta = Math.random() * 2 - 1, sinTheta = Math.sqrt(1 - cosTheta * cosTheta), phi = Math.random() * 2 * Math.PI; zurückkehren { x: this.SCATTER_RADIUS * sinTheta * Math.cos(phi), y: this.SCATTER_RADIUS * sinTheta * Math.sin(phi), z: this.SCATTER_RADIUS * cosTheta, Farbton: Math.round(phi / Math.PI * 30) }; }, erstelleTorus: Funktion() { var theta = Math.random() * Math.PI * 2, x = dieser.SCATTER_RADIUS + dieser.SCATTER_RADIUS / 6 * Math.cos(theta), y = dieser.SCATTER_RADIUS / 6 * Math.sin(theta), phi = Math.random() * Math.PI * 2; zurückkehren { x: x * Math.cos(phi), j: j, z: x * Math.sin(phi), Farbton: Math.round(phi / Math.PI * 30) }; }, erstelleKegel: Funktion() { var status = Math.random() > 1 / 3, X, ja, phi = Math.random() * Math.PI * 2, Rate = Math.tan(30 / 180 * Math.PI) / this.CONE_ASPECT_RATIO; wenn (Status) { y = this.SCATTER_RADIUS * (1 - Math.random() * 2); x = (dieser.SCATTER_RADIUS – y) * Rate; } anders { y = -dies.SCATTER_RADIUS; x = this.SCATTER_RADIUS * 2 * Rate * Math.random(); } zurückkehren { x: x * Math.cos(phi), j: j, z: x * Math.sin(phi), Farbton: Math.round(phi / Math.PI * 30) }; }, erstelleVase: Funktion() { var theta = Math.random() * Math.PI, x = Math.abs(dieser.SCATTER_RADIUS * Math.cos(theta) / 2) + dieser.SCATTER_RADIUS / 8, y = dieser.SCATTER_RADIUS * Math.cos(theta) * 1,2, phi = Math.random() * Math.PI * 2; zurückkehren { x: x * Math.cos(phi), j: j, z: x * Math.sin(phi), Farbton: Math.round(phi / Math.PI * 30) }; } }; var TEILCHEN = Funktion(Mitte) { dies.center = Mitte; dies.init(); }; PARTIKEL.prototyp = { FEDER: 0,01, REIBUNG: 0,9, FOKUS_POSITION: 300, FARBE: 'hsl(%Farbton, 100%, 70%)', init: Funktion() { dies.x = 0; dies.y = 0; dies.z = 0; dies.vx = 0; dies.vy = 0; dies.vz = 0; diese.Farbe; }, setAxis: Funktion(Achse) { dies.übersetzen = wahr; dies.nächstesX = Achse.x; dies.nächstesY = Achse.y; dies.nächsteZ = Achse.z; dieser.Farbton = Achse.Farbton; }, rotateX: Funktion(Winkel) { var sin = Math.sin(Winkel), cos = Math.cos(Winkel), nächstesY = dies.nächstesY * cos - dies.nächstesZ * sin, nextZ = dies.nextZ * cos + dies.nextY * sin, y = dies.y * cos - dies.z * sin, z = dies.z * cos + dies.y * sin; dies.nächstesY = nächstesY; dies.nextZ = nextZ; dies.y = y; dies.z = z; }, rotateY: Funktion(Winkel) { var sin = Math.sin(Winkel), cos = Math.cos(Winkel), nächstesX = dies.nächstesX * cos - dies.nächstesZ * sin, nextZ = dies.nextZ * cos + dies.nextX * sin, x = dies.x * cos - dies.z * sin, z = dies.z * cos + dies.x * sin; dies.nächstesX = nächstesX; dies.nextZ = nextZ; dies.x = x; dies.z = z; }, rotateZ: Funktion(Winkel) { var sin = Math.sin(Winkel), cos = Math.cos(Winkel), nächstesX = dies.nächstesX * cos - dies.nächstesY * sin, nächstesY = dieses.nächstesY * cos + dieses.nächstesX * sin, x = dies.x * cos - dies.y * sin, y = dies.y * cos + dies.x * sin; dies.nächstesX = nächstesX; dies.nächstesY = nächstesY; dies.x = x; dies.y = y; }, getAxis3D: Funktion() { dies.vx += (dieses.nextX - dies.x) * dies.SPRING; dies.vy += (dieses.nextY - dies.y) * dies.SPRING; dies.vz += (dieses.nextZ - dies.z) * dies.SPRING; dies.vx *= dies.FRICTION; dies.vy *= dies.FRICTION; dies.vz *= dies.FRICTION; dies.x += dies.vx; dies.y += dies.vy; dies.z += dies.vz; zurückkehren { x: dies.x, y: dies.y, z: dies.z }; }, getAxis2D: Funktion (Theta) { var Achse = this.getAxis3D(), Skalierung = diese.FOCUS_POSITION / (diese.FOCUS_POSITION + Achse.z); zurückkehren { x: this.center.x + axis.x * Maßstab, y: this.center.y - axis.y * Skalierung, Farbe: this.COLOR.replace('%hue', this.hue + theta) }; } }; $(Funktion() { RENDERER.init(STRATEGIE); }); </Skript> </body> </html> 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:
|
<<: Installation und Verwendung der MySQL MyCat-Middleware
>>: Implementierung eines Tomcat-Images, das mit Dockerfile basierend auf Alpine erstellt wurde
1. Hintergrund Obwohl ich viele Blogs und Artikel...
Inhaltsverzeichnis 1. Einige Punkte, die Sie beac...
Zu meistern: localStorage, Komponentenkapselung Ä...
Inhaltsverzeichnis 1. Was ist virtueller Dom? 2. ...
Das sogenannte dreispaltige adaptive Layout bedeu...
Tomcat konfigurieren 1. Klicken Sie auf „Konfigur...
Inhaltsverzeichnis Vom Vater zum Sohn Vom Sohn zu...
Vorwort In einem üblichen Geschäftsszenario müsse...
In diesem Artikel wird der spezifische Code von j...
IFNULL(Ausdruck1,Ausdruck2) Wenn expr1 nicht NULL...
Vorwort Wenn ein 403-Cross-Origin-Fehler auftritt...
Inhaltsverzeichnis Tomcat-Download-Tutorial Tutor...
In diesem Artikelbeispiel wird der spezifische Co...
Umgebung: MacOS_Cetalina_10.15.1, Mysql8.0.18, Do...
Vorwort Die am häufigsten verwendete Datenbank in...