Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Proyecto] Cambiar de color con click derecho.

Hola compañeros. Les comparto como hice el código del ejercicio de cambiar el color del circulo dando click derecho. No fue como el que hizo el profesor ya que el del profesor fue mucho más sencillo y el resultado fue el mismo. Me sorprendió como el profesor lo hizo de sencillo comparado con todo lo que hice de código para que funcionara igual. Solamente espero algún día llegar a ese nivel de lógica que me permita siempre tomar el camino más corto para llegar al resultado. Un cordial saludo a todos.

<canvas width="600" height="400"> </canvas>

<script>

    var pantalla = document.querySelector("canvas");
    var pincel = pantalla.getContext("2d");
    pincel.fillStyle = "grey";
    pincel.fillRect(0, 0, 600, 400);

    function dibujarCirculo(evento) {
        var x = evento.pageX - pantalla.offsetLeft;
        var y = evento.pageY - pantalla.offsetTop;

        pincel.fillStyle = color;
        pincel.beginPath();
        pincel.arc(x, y, 10, 0, 2 * 3.14);
        pincel.fill();
        console.log(x + "," + y);
    }

    pantalla.onclick = dibujarCirculo;

    function alterarColor() {

        var colores = ["blue", "red", "green", "black", "yellow", "pink", "white"];

        if (contador < colores.length) {
            color = colores[contador];
            contador++; 
        } else {
            contador = 0;
            color = colores[contador];
            contador++;
        }
        return false;
    }
    var contador = 1;
    var color = "blue";

    pantalla.oncontextmenu = alterarColor;

</script>
1 respuesta

¡Hola Hernánleonardoquirogabeltrán!

Gracias por compartir tu código y tu experiencia con nosotros. Es genial que hayas logrado cambiar el color del círculo haciendo clic derecho, aunque hayas tenido que escribir más código que el profesor. A veces, la forma más sencilla de hacer las cosas no es evidente al principio, pero con la práctica y la experiencia, podrás desarrollar esa lógica para encontrar soluciones más eficientes.

En cuanto a tu código, parece que estás utilizando el evento "onclick" para dibujar el círculo y el evento "oncontextmenu" para cambiar el color. Esto está bien, pero creo que podrías simplificar un poco tu función "alterarColor". En lugar de tener un contador y un array de colores, podrías utilizar una variable para almacenar el índice del color actual y simplemente incrementarlo en cada clic derecho. Algo así:

function alterarColor() {
    var colores = ["blue", "red", "green", "black", "yellow", "pink", "white"];
    color = colores[indiceColor];
    indiceColor = (indiceColor + 1) % colores.length;
    return false;
}

De esta manera, no necesitarías el contador ni el condicional para reiniciarlo cuando llegue al final del array de colores.

Espero que esto te ayude a simplificar tu código. ¡Sigue practicando y seguro que llegarás a ese nivel de lógica que deseas! Si tienes alguna otra pregunta, no dudes en preguntar.

¡Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)