einführenDieser Effekt wird mit Canvas gezeichnet und dann mithilfe der Klassenvererbung implementiert. Wenn sich die Maus an die angegebene Canvas-Position bewegt, wird an der aktuellen Mausposition ein kleiner Ball in zufälliger Farbe erzeugt, der dann langsam verschwindet. Wirkungsdiagramm Implementierungsschritte
HTML-Struktur <!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="UTF-8"> <meta name="viewport" content="width=Gerätebreite, Anfangsmaßstab=1.0"> <title>Schöne Bälle</title> <Stil> #Leinwand{ Rand links: 100px } </Stil> </Kopf> <Text> <canvas id="canvas">Ihr Browser unterstützt Canvas nicht</canvas> <!-- <script src="./underscore-min.js"></script> --> <!-- Underscore hat bereits eine gepackte _.random-Funktion. Sie müssen keine Zufallsfunktion manuell schreiben, indem Sie sie importieren. --> <script src="./index.js"></script> </body> </html> Erstellen einer Canvas-Umgebung// index.js // 1. Aktuelle Leinwand abrufen const canvas = document.getElementById('canvas'); const ctx = canvas.getContext('2d'); // Leinwandgröße festlegen Stil canvas.width = 1000; Leinwandhöhe = 600; Leinwand.Stil.Hintergrundfarbe = "#000" Beispielanalyse Suchen Sie zuerst das Canvas-Element: const canvas = document.getElementById("myCanvas"); Erstellen Sie dann das Kontextobjekt: const ctx = canvas.getContext('2d'); Legen Sie die Hintergrundfarbe für Breite und Höhe fest Schreibball// index.js // 2. Ball Klasse Klasse Ball { Konstruktor (x, y, Farbe) { this.x = x; // x-Achse this.y = y; // y-Achse this.color = color; // Farbe des Balls this.r = 40; // Radius des Balls } // Zeichne den Ball render () { ctx.speichern(); ctx.beginPath(); ctx.arc(dieses.x, dies.y, dies.r, 0, Math.PI * 2); ctx.fillStyle = diese.Farbe; ctx.fill(); ctx.wiederherstellen(); } } Beispielanalyse
Implementieren Sie die MoveBall-Klasse, die die Ball-Klasse erbt// index.js // 3. Klasse die den Ball bewegt class MoveBall extends Ball { // Erbt Konstruktor (x, y, color) { super(x, y, Farbe); // Änderung der Menge // Zufällige Koordinaten des Balls this.dX = Random(-5, 5); dies.dY = Zufallsprinzip(-5, 5); // Zufallszahl für abnehmenden Radius, da der Ball zuerst groß ist und dann langsam verschwindet. this.dR = Random(1, 3); } // 4. Ändere die Position und den Radius des Balles upDate () { dies.x += dies.dX; dies.y += dies.dY; dies.r -= dies.dR; // Bestimmen Sie, ob der Radius des Balls kleiner als 0 ist wenn(dies.r < 0) { this.r = 0 // Ein Radius von 0 bedeutet, dass der Ball verschwindet} } } Beispielanalyse
Instanziieren Sie den Ball// index.js // 5. Instanziieren Sie den Ball // Speichern Sie den generierten Ball let ballArr = []; // Zufallsfunktion definieren Wenn Sie auf underscore-min.js verweisen, müssen Sie keine Zufallsfunktion schreiben, sondern können direkt _.random verwenden lass Random = (min, max) => { gibt Math.floor(Math.random() * (max - min) + min) zurück; } // Auf Mausbewegungen achten canvas.addEventListener('mousemove', function (e){ // Zufällige Farben // Sie können auch ein festes Farbarray verwenden let colorArr = ['rot', 'grün', 'blau', 'gelb', 'orange', 'pink']; // Hintergrundfarbe ==> FarbeArr[Zufällig(0, FarbeArr.Länge - 1)] Lassen Sie bgColor = `rgb(${Random(0,256)}, ${Random(0,256)}, ${Random(0,256)})`; ballArr.push(neuer MoveBall(e.offsetX, e.offsetY, bgColor)); Konsole.log(ballArr); }) //Starte den Timer setInterval(function () { // Bildschirm löschen ctx.clearRect(0, 0, canvas.width, canvas.height); // Zeichne den Ball für (let i = 0 ; i < ballArr.length; i++ ) { ballArr[i].render(); ballArr[i].upDate(); } }, 50); Beispielanalyse
Wir können sehen, dass der Radius des Balls, der den Bildschirm nicht verlässt, allmählich kleiner wird, aber der Ball verschwindet am Ende nicht. Das ist definitiv nicht der Effekt, den wir wollen! Welchen Effekt hat das Löschen des Bildschirms? Es ist der Effekt vom Anfang des Artikels! (Baby, hab Spaß❤) index.js vollständiger Code// 1. Aktuelle Leinwand abrufen const canvas = document.getElementById('canvas'); const ctx = canvas.getContext('2d'); // Leinwandgröße festlegen Stil canvas.width = 1000; Leinwandhöhe = 600; Leinwand.Stil.Hintergrundfarbe = "#000" // 2. Ball Klasse Klasse Ball { Konstruktor (x, y, Farbe) { dies.x = x; dies.y = y; diese.farbe = Farbe; dies.r = 40; } // Zeichne den Ball render () { ctx.speichern(); ctx.beginPath(); ctx.arc(dieses.x, dies.y, dies.r, 0, Math.PI * 2); ctx.fillStyle = diese.Farbe; ctx.fill(); ctx.wiederherstellen(); } } // 3. Klasse die den Ball bewegt class MoveBall extends Ball { // Erbt Konstruktor (x, y, color) { super(x, y, Farbe); // Änderung der Menge // Zufällige Koordinaten des Balls this.dX = Random(-5, 5); dies.dY = Zufallsprinzip(-5, 5); // Zufallszahl mit kleinerem Radius this.dR = Random(1, 3); } // 4. Ändere die Position und den Radius des Balles upDate () { dies.x += dies.dX; dies.y += dies.dY; dies.r -= dies.dR; // Bestimmen Sie, ob der Radius des Balls kleiner als 0 ist wenn(dies.r < 0) { dies.r = 0 } } } // 5. Instanziieren Sie den Ball // Speichern Sie den generierten Ball let ballArr = []; // Zufallsfunktion definieren Wenn Sie auf underscore-min.js verweisen, müssen Sie keine Zufallsfunktion schreiben, sondern können direkt _.random verwenden lass Random = (min, max) => { gibt Math.floor(Math.random() * (max - min) + min) zurück; } // Auf Mausbewegungen achten canvas.addEventListener('mousemove', function (e){ // Zufällige Farben // Sie können auch ein festes Farbarray verwenden let colorArr = ['rot', 'grün', 'blau', 'gelb', 'orange', 'pink']; // Hintergrundfarbe ==> FarbeArr[Zufällig(0, FarbeArr.Länge - 1)] Lassen Sie bgColor = `rgb(${Random(0,256)}, ${Random(0,256)}, ${Random(0,256)})`; ballArr.push(neuer MoveBall(e.offsetX, e.offsetY, bgColor)); Konsole.log(ballArr); }) //Starte den Timer setInterval(function () { // Bildschirm löschen ctx.clearRect(0, 0, canvas.width, canvas.height); // Zeichne den Ball für (let i = 0 ; i < ballArr.length; i++ ) { ballArr[i].render(); ballArr[i].upDate(); } }, 50); ZusammenfassenIch hoffe, diese kleine Demo kann Ihnen dabei helfen, sich mit dem Verständnis und der Verwendung von Klassen in ES6 vertraut zu machen. Dies ist das Ende dieses Artikels darüber, wie Sie mithilfe der ES6-Klassenvererbung den Effekt wunderschöner kleiner Bälle erzielen können. Weitere relevante Inhalte zur ES6-Klassenvererbung zum Erzielen kleiner Bälle finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Zusammenfassung der Verwendung von Linux-SFTP-Befehlen
>>: Beispieloperation für die Summe des Mysql-Varchar-Typs
Prämisse In komplexen Szenarien müssen große Date...
Inhaltsverzeichnis Überblick Virtueller Dom Prinz...
In diesem Artikelbeispiel wird der spezifische Co...
Fehlerbeschreibung percona5.6, mysqldump vollstän...
Installieren Sie Nginx auf Docker Nginx ist ein l...
In diesem Artikel wird der spezifische Code von v...
Ich habe diesen Blog geschrieben, um mich daran z...
Innodb umfasst die folgenden Komponenten 1. innod...
Vererbung von Prototypketten Die Prototypenvererb...
Frage Im vorherigen Artikel zur domänenübergreife...
Inhaltsverzeichnis Konfiguration hinzufügen JSON-...
html,Adresse, Blockzitat, Körper, dd, div, dl,dt,...
Detailliertes Beispiel zum Abrufen des Maximalwer...
Zur Aufzeichnung: Es kann in Zukunft verwendet we...
System: Ubuntu 16.04LTS 1\Laden Sie mysql-5.7.18-...