Natives JS zur Realisierung eines springenden Balls

Natives JS zur Realisierung eines springenden Balls

Aus einer Laune heraus habe ich eine Fallstudie über einen kleinen Ball geschrieben, der hin und her springt, damit Sie es nachlesen können. Der spezifische Inhalt ist wie folgt

Die Hauptmethode besteht darin , den linken/oberen Randwert für die Verschiebung zu verwenden. Natürlich können Sie hierfür auch die Positionierung verwenden.

In diesem Fall werden folgende verwendet:

  • Erfassung von DOM-Elementen
  • Manipulation im DOM-Stil
  • .offsetWidth Ermittelt die Breite des Elements
  • .offsetHeight Ermittelt die Höhe des Elements
  • setInterval() Zeitgeber

Zum Code

Verwenden Sie natives JS als Ganzes

<Stil> //Stil Stil* {
            Rand: 0;
            Polsterung: 0;
        }

        #Kasten {
            Breite: 500px;
            Höhe: 600px;
            Hintergrundfarbe: #eee;
            Kastenschatten: 0 0 10px 0 #000;
            Rand: automatisch;
            Überlauf: versteckt;
            Position: relativ;
            Rand oben: 50px;
        }

        #box div {
            Breite: 50px;
            Höhe: 50px;
            Randradius: 50 %;
            Hintergrundfarbe: #fff;
            Position: absolut;
        }
    </Stil>
    <Text>
    <div id="box">
        <div id="cir"></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
</body>
<Skript>
var box = document.getElementById("box");
var cir = document.getElementById("cir")
var cirs = box.querySelectorAll("div");
collMove(box, Kreis, 6);
collMove(box, cirs[1], 7);
collMove(box, cirs[2], 8);
collMove(box, cirs[3], 9);
collMove(box, cirs[4], 10);
collMove(box, cirs[5], 10);
collMove(box, cirs[6], 11);
/**
 * Das Element wird angezeigt, wenn es auf eine Grenze trifft. * Ändert die Farbe des Elements beim Anzeigen. * @param {Abzurufender Container} box 
 * @param {hol das Bounce-Element im Container} cir 
 * @param {bounce speed} Geschwindigkeit 
 */
function collMove(box, cir, speed) { //Methodenkapselung var oDiv = box; //Container abrufen var oCir = cir; //Element im Container abrufen var xMax = oDiv.offsetWidth - oCir.offsetWidth; //Maximale X-Achsengrenze des Containers var yMax = oDiv.offsetHeight - oCir.offsetHeight; //Maximale Y-Achsengrenze des Containers var motionX = 0; //Initialisierung der X-Achsenkoordinate des Elements var motionY = 0; //Initialisierung der Y-Achsenkoordinate des Elements (() => {
        var speedX = Geschwindigkeit; //Offset der x-Achse var speedY = Geschwindigkeit; //Offset der y-Achse setInterval(() => {
            motionX += speedX; //X-Achsen-Offset ausführenmotionY += speedY; //Y-Achsen-Offset ausführenif (motionX >= xMax) { //Überprüfen, ob die rechte Grenze der X-Achse erreicht wirdmotionX = xMax; //Bei Erreichen der Grenze die X-Achsenkoordinate auf die maximale rechte Grenze der X-Achse setzenspeedX = -speedX; //X-Achsen-Offset umkehrenrandColor(oCir); //Farbe ändern} else if (motionX <= 0) { //Überprüfen, ob die linke Grenze der X-Achse erreicht wirdmotionX = 0; //Bei Erreichen der Grenze die X-Achsenkoordinate auf 0 setzen, d. h. auf die Anfangsposition der linken GrenzespeedX = -speedX; //X-Achsen-Offset erneut umkehrenrandColor(oCir); //Dasselbe gilt unten für die Erkennung der oberen und unteren Grenze}
            wenn (BewegungY >= yMax) {
                BewegungY = yMax;
                GeschwindigkeitY = -GeschwindigkeitY
                Randfarbe(oCir);
            } sonst wenn (BewegungY <= 0) {
                BewegungY = 0;
                GeschwindigkeitY = -GeschwindigkeitY;
                Randfarbe(oCir);
            }
            oCir.style.marginLeft = motionX + "px"; //X-Achsenkoordinate des Elements festlegen oCir.style.marginTop = motionY + "px"; //Y-Achsenkoordinate des Elements festlegen }, 10);
    })();

    function randColor(obj) { //Eine zufällige Farbe einkapseln, die Farbe ändern und direkt aufrufen var op = Math.random() * 7 + 3;

        Funktion Farbe() {
            gibt Math.floor(Math.random() * 256) zurück;
        }
        return obj.style.backgroundColor = `rgba(${color()},${color()},${color()},${op})`;
    }
}
</Skript>

Das Wichtigste bei der gesamten Methode ist , die Erkennung und Beurteilung der Elementposition und der Containergrenzen zu verstehen . Sobald Sie diesen Teil verstanden haben, ist der Rest sehr einfach.
Kleiner Tipp: Stelle den Behälter nicht auf ein normales Quadrat , da der Ball sonst aufgrund des Winkels nur von der linken oberen Ecke in die rechte untere Ecke hin und her springen kann.
Die gesamte Methode ist gekapselt. Bei Bedarf kann die gesamte Methode einfach kopiert oder eingebunden werden und der Methodenname entsprechend den entsprechenden Parametern direkt verwendet werden. Rufen Sie jeweils ein Element auf. Wenn Sie nicht zu beschäftigt sind, können Sie direkt eine for-Schleife schreiben, um es wiederholt aufzurufen.

Wirf einen Ziegelstein:

für(var i = 1 ; i<=10;i++){
 collMove(box,cirs[i],i);
}

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+Canvas realisiert den springenden Ball im Rahmen
  • JavaScript kombiniert mit Canvas zum Zeichnen von Sportbällen
  • JavaScript Canvas implementiert die Bewegung des Balls entlang der Maus
  • Natives JS zur Realisierung eines bewegten Balls (Kollisionserkennung)
  • js realisiert die Bewegung des Balls im angegebenen Bereich der Seite
  • Verwenden Sie js, um den Freibewegungscode des Balls zu realisieren
  • js realisiert einen kleinen Ball, der der Mausbewegung folgt
  • JavaScript realisiert die Bewegung eines Balls entlang einer Sinuskurve
  • P5.js-Tutorial für die ersten Schritte: Beispielcode für eine Ballanimation
  • Native js realisiert den Bouncing-Ball-Effekt

<<:  Detaillierte Erläuterung der MySQL-Mehrtabellenabfrage

>>:  So beheben Sie den PyCurl-Fehler unter Linux

Artikel empfehlen

Automatische Dateisynchronisierung zwischen zwei Linux-Servern

Wenn Server B (172.17.166.11) eingeschaltet oder ...

Vue implementiert Multi-Tab-Komponente

Um die Wirkung direkt zu sehen, wurde ein Rechtsk...

Einführung in RHCE-Bridging, passwortfreie Anmeldung und Portnummernänderung

Inhaltsverzeichnis 1. Konfigurieren Sie Bridging ...

Grundlegendes zur CSS-Eigenschaft „transform-origin“

Vorwort Ich habe vor kurzem eine Feuerwerksanimat...

Beispiel zum Referenzieren von Umgebungsvariablen in Docker Compose

In einem Projekt müssen Sie häufig Umgebungsvaria...

Einführung in die Verwendung des offiziellen MySQL-Leistungstesttools mysqlslap

Inhaltsverzeichnis Einführung Anweisungen Tatsäch...

SQL-Funktion zum Zusammenführen eines Feldes

Vor kurzem musste ich alle Felder einer verknüpft...

So kapseln Sie Paging-Komponenten manuell in Vue3.0

In diesem Artikel wird der spezifische Code der m...

Detaillierte Erklärung des Vue3-Sandbox-Mechanismus

Inhaltsverzeichnis Vorwort Browser kompilierte Ve...