¡Bienvenido a un universo de conocimiento en constante expansión! Aprende en SP Universo, te invitamos a embarcarte en un viaje educativo que no solo te informará, ¡sino que transformará tu vida por completo!

domingo, 22 de septiembre de 2024

cómo Crear Partîculas con el Mouse usando JavaScript ¡Fácil y divertido!



🌈 Imagina partículas que danzan en tiempo real, respondiendo a cada movimiento que haces. Este video no solo es una lección de desarrollo web, ¡es una invitación a explorar la creatividad sin límites y a maravillarse con el poder de la programación en acción!.




<!DOCTYPE html>

<html lang="en">

    <head>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <link rel="stylesheet" href="styles.css">

        <title>Partículas en movimiento con colores aleatorios</title>

    /head>

   <body>

       <div>

            <h1>Particulas de Colores</h1>

            <h1>SP Universo</h1>

        </div>

        <canvas id="particleCanvas"></canvas>

        <!-- La etiqueta <canvas> es parte de HTML5 y se utiliza para dibujar gráficos y realizar -->

        <!--animaciones mediante JavaScript. El lienzo se identifica con el atributo "id" --> 

       <script src="script.js"></script>

    </body>

</html>

CSS

body {

    margin: 0;

}

canvas {

    display: block;

}

h1{

    font-size: 40px;

    text-align: center;  

    color: rgb(209, 76, 14);          

    border-right: 30px solid red;

   border-bottom: 30px solid #4c4c4c;

}

JAVASCRIPT

//Este código en JavaScript se utiliza para crear un lienzo (canvas) en una página web,

//configurar su contexto 2D y definir un arreglo llamado "particles" para almacenar información sobre partículas.

 

const canvas = document.getElementById("particleCanvas");

//Obtiene el elemento canvas del documento HTML mediante su identificador y lo almacena en la constante canvas.

const ctx = canvas.getContext("2d"); //el contexto 2D del canvas, se almacena en la constante ctx.

canvas.width = window.innerWidth; //permite que el lienzo ocupe todo el ancho visible en la pantalla.canvas.height = window.innerHeight; //permitiendo que el lienzo se extienda por toda la altura visible en la pantalla.

canvas.height = window.innerHeight; //permitiendo que el lienzo se extienda por toda la altura visible en la pantalla.

 

const particles = []; //Crea un arreglo vacío llamado "particles" que se utilizará para almacenar información sobre

//las partículas que se dibujarán en el lienzo.

 

//La clase se utiliza para representar partículas que pueden tener posición, tamaño, color

//y velocidad en dos dimensiones (horizontal y vertical).

class Particle { 

    // Constructor de la clase

    constructor(x, y, size, color) {

        // Propiedades de la partícula: posición (x, y), tamaño, color

        this.x = x;

        this.y = y;

        this.size = size;

        this.color = color;

        // Propiedades de velocidad en las dimensiones x e y

        this.speedX = Math.random() * 3 - 1.5;

        this.speedY = Math.random() * 3 - 1.5;

    }

 

    // La función update se utiliza para modificar las propiedades de una partícula en función de su velocidad y tamaño

    update() {

        // Actualiza la posición de la partícula según su velocidad en las dimensiones x e y

        this.x += this.speedX;

        this.y += this.speedY;

       

        // Verifica si el tamaño de la partícula es mayor que 0.2

        // y reduce el tamaño en 0.1 si es cierto

        if (this.size > 0.2) this.size -= 0.1;

    }

 

     //La función draw se utiliza para dibujar una partícula en un lienzo HTML utilizando el contexto 2D (ctx)

     draw() {

        // Establece el color de relleno del contexto con el color de la partícula

        ctx.fillStyle = this.color;

        // Establece el color del trazo (borde) del contexto en negro

        ctx.strokeStyle = "black";

        // Establece el ancho del trazo del contexto en 2 píxeles

        ctx.lineWidth = 2;

        // Inicia un nuevo trazo

        ctx.beginPath();

        // Dibuja un arco en el lienzo que representa la partícula

        // Los parámetros son: x, y, radio, ángulo inicial, ángulo final

        ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);

        // Cierra el trazo

        ctx.closePath();

        // Rellena el interior del arco con el color de relleno especificado

        ctx.fill();

        // Dibuja el borde del arco con el color y ancho de trazo especificados

        ctx.stroke();

    }

}

 

function createParticle(e) {

    // Obtiene las coordenadas del evento de clic o posición del mouse

    const xPos = e.x;

    const yPos = e.y;

   

    // Genera un tamaño aleatorio para la partícula en el rango [5, 35)

    const size = Math.random() * 30 + 5;

 

    // Genera un color aleatorio en formato RGB

    const color = `rgb(${Math.random() * 255},${Math.random() * 255},${Math.random() * 255})`;

 

     // Crea una nueva instancia de la clase Particle con las propiedades calculadas

    const particle = new Particle(xPos, yPos, size, color);

     // Agrega la nueva partícula al arreglo de partículas

    particles.push(particle);

}

 

function animateParticles() {

    // Limpia el lienzo borrando el contenido

   ctx.clearRect(0, 0, canvas.width, canvas.height);

 

   // Itera sobre todas las partículas en el arreglo

   for (let i = 0; i < particles.length; i++) {

 

       // Actualiza las propiedades de la partícula (posición, tamaño, etc.)

       particles[i].update();

 

       // Dibuja la partícula en el lienzo

       particles[i].draw();

   }

 

   // Solicita al navegador que programe la próxima ejecución de la función animateParticles

   // para crear una animación continua

   requestAnimationFrame(animateParticles);

}

 

//Este código utiliza dos funciones en conjunto para crear una interacción de partículas en

//respuesta al movimiento del ratón en una página web

//Cuando se detecta un movimiento del ratón, se llama a la función createParticle.

document.addEventListener("mousemove", createParticle);

animateParticles();

//Llama a la función animateParticles, que se encargará de iniciar y mantener la animación

//continua de las partículas en el lienzo. Esta función probablemente contiene un bucle que utiliza

requestAnimationFrame //para mantener la animación en curso.










0 comments:

Publicar un comentario