Die Leinwand implementiert eine kleine Demo mit dynamischen Effekten (Scrolling-Kreis)

Zeige Ergebnisse:

Erstens: Analyse des Problems:

  1. Zunächst einmal ist die statische Struktur eine Kiste, und in der Kiste befindet sich ein Kreis.
  2. Der Kreis bewegt sich in der Box.
  3. Der Prozess des Bewegens spiegelt die Zufälligkeit wider.
  4. Es entsteht ein Bounce-Effekt, wenn der Kreis auf den Rand des Kästchens trifft.

Zwei: Ideen zur Problemlösung:

  1. Die explizit verwendete API ist die Leinwand canvas. Dynamische Effekte verwenden Timer.
  2. Zeichnen Sie zuerst die statische Struktur.
  3. Berechnen Sie die Koordinaten des Mittelpunkts des Kreises, während er sich bewegt.
  4. Berechnen Sie die Bedingungen, unter denen der Kreis abprallt, wenn er auf den Rand des Kästchens trifft.
  5. Effekte werden dynamisch über Timer implementiert.

Drittens: Code-Implementierung:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态</title>
</head>

<body>
    <canvas id="myCanvas" width="500px" height="500px" style="border: 1px solid black;"></canvas>
    <script>
        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");

        function rand(mun) {
            return Math.floor(Math.random() * mun + 1)
        }
        var arcX = 40;
        var arcY = 40;
        var arcR = 40;
        var radX = rand(10);
        var radY = rand(10);
        setInterval(function () {
            ctx.clearRect(0, 0, 500, 500);
            arcX += radX;
            arcY += radY;
            if (arcX > c.width - arcR) {
                radX = -radX;
            }
            if (arcX < arcR) {
                radX = Math.abs(radX);
            }
            if (arcY > c.width - arcR) {
                radY = -radY;
            }
            if (arcY < arcR) {
                radY = Math.abs(radY);
            }
            ctx.beginPath();
            ctx.fillStyle = "blue";
            ctx.arc(arcX, arcY, 40, 0, 2 * Math.PI);
            ctx.fill();
        }, 20)
    </script>
</body>

</html>

Viertens: Coole Fallteilung:

Supongo que te gusta

Origin blog.csdn.net/m0_50789201/article/details/124362303
Recomendado
Clasificación