Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

problemas con el cambio de color

no logro hacer el cambio con el click derecho. que codigo es el que se usa para que no se despliegue el menú del l click derecho??

saludos



<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 colores = ["blue", "red", "green"]; 
    var indiceColorActual = 0;

    function dibujarCirculo(evento){
        var x = evento.pageX - pantalla.offsetLeft;
        var y = evento.pageY - pantalla.offsetTop;    
        pincel.fillStyle = colores[indiceColorActual]; 
        pincel.beginPath();
        pincel.arc(x,y,10,0,2*3.14);
        pincel.fill();
        console.log(x + "," + y);        
    }

    pantalla.onclick = dibujarCirculo;

    function alterarColor() {
        indiceColorActual++;
        if(indiceColorActual>= colores.length) {
             indiceColorActual = 0; //vuelve para el primer color, blue
        }
        return false; //menú contextual padrón de `canvas` no sea exhibido
    }

    pantalla.oncontextmenu = alterarColor;

</script> 
2 respuestas
solución!

Buen día Sergio,

Creo que el funsionamiento de los clics es para el cambio de color, es decir con el clic derecho cambias de color, bien sea si estas en azul pasaría a rojo o verde, bien sea el orden de los colores...

Por cierto, he corrido algo en tu código, solo separe algunos signos de una línea, a saber " >= ". y ya anda bien...

<script>
        var pantalla = document.querySelector("canvas");
        var pincel = pantalla.getContext("2d");
        pincel.fillStyle = "grey";
        pincel.fillRect(0, 0, 600, 400);
        var colores = ["blue", "red", "green"];
        var indiceColorActual = 0; 

        function dibujarCirculo(evento) {
            var x = evento.pageX - pantalla.offsetLeft;
            var y = evento.pageY - pantalla.offsetTop;
            pincel.fillStyle = colores[indiceColorActual];
            pincel.beginPath();
            pincel.arc(x, y, 10, 0, 2 * 3.14);
            pincel.fill();
            console.log(x + "," + y);
        }

        pantalla.onclick = dibujarCirculo;

        function alterarColor() {
            indiceColorActual++;
            if (indiceColorActual >= colores.length) {
                indiceColorActual = 0; //vuelve para el primer color, blue
            }
            return false; //menú contextual patrón de `canvas` no sea exhibido
        }

        pantalla.oncontextmenu = alterarColor;

    </script>

Espero que te funcione,

Saludos...

muchas gracias Julián, creo que gran parte de este desafío tiene que ver con la gramática del código, nuevamente muchas gracias