Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Duda] Mi solución al diseñando con el mouse

Hice la parte de la paleta de colores y para que pueda cambiar el color todo bien hasta allí, pero no he podido hacer que la paleta no sea alterada al pasar el mouse por encima y se dibuja los circulos en los cuadrados de la paleta

<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);

    var puedoDibujar = false;

    var colorcito = "blue";


    function dibujarCuadrado(x,y,color){
        var pantalla = document.querySelector("canvas");
        var pincel = pantalla.getContext("2d");   
        pincel.fillStyle = color; 
        pincel.fillRect(x,y,50,50);
        pincel.strokeStyle = "black";
        pincel.strokeRect(x,y,50,50);
    }

    function dibujarCuadradosIniciales() {
        var px = 0;
        while(px<50){
            dibujarCuadrado(0,px,"red");
            dibujarCuadrado(50,px,"green");
            dibujarCuadrado(100,px,"blue");
            px = px + 50;
        }
    }

    dibujarCuadradosIniciales();

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

        if(x<=50 && y<=50){
            colorcito = "red";
        }else if(x<=100 && y <=50){
            colorcito = "green";
        }else if(x<=150 && y<=50){
            colorcito = "blue";
        }
    }
    pantalla.onclick = posicionarPaleta;


    function dibujarCirculo(evento) {

        if(puedoDibujar) {

            var x = evento.pageX - pantalla.offsetLeft;
            var y = evento.pageY - pantalla.offsetTop;
            pincel.fillStyle = colorcito;
            pincel.beginPath();
            pincel.arc(x, y, 5, 0, 2 * 3.14);
            pincel.fill();
        }

    }

    pantalla.onmousemove = dibujarCirculo;

    function habilitarDibujar() {

        puedoDibujar = true;

    }

    function deshabilitarDibujar() {

        puedoDibujar = false;


    }

    pantalla.onmousedown = habilitarDibujar;

    pantalla.onmouseup = deshabilitarDibujar;

</script>
2 respuestas
solución!

Tendrías que agregar una condicional dentro de la función dibujarCirculo, excluyendo el área de la paleta, algo parecido a tu función posicionarPaleta, solo que ahora vas a indicar que si el puntero está sobre el área de la paleta entonces no va a trazar nada

Ya lo había resuelto antes de ver tu respuesta, y sí, era así como lo dijiste, gracias igualmente