Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

Cambiando colores

<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 contador = 0;

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

    pantalla.onclick = dibujarCirculo;

    function alterarColor() {
        contador++;
        if(contador >= colores.length){
            contador = 0;
        }
        return false;

    }

    pantalla.oncontextmenu = alterarColor;

</script> 
3 respuestas

Hola compañero, muy bueno tu aporte, sin embargo a pesar de estar cercano a la funcionalidad completa faltó especificar en la función dibujarCirculo que el color sería definido por el la posición i en el array colores, es decir colores[i]. P.D: declaré las variables con let porque actualmente casi no se usa el var para declarar variables porque puede generar problemas en el codigo, te aconsejo también usar let o en su defecto const si es un valor que no cambiará.

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

<script>

    let pantalla = document.querySelector("canvas");
    let pincel = pantalla.getContext("2d");  
    let colores = ["blue", "red", "green"]  
    let i=0;
    pincel.fillStyle = "lightgrey";
    pincel.fillRect(0,0,600,400); 

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

    pantalla.onclick = dibujarCirculo;

    function alterarColor() {
        i++;
        if(i>=colores.length){
            i=0;
        }
        alert("Funcionó");
        return false;

    }

    pantalla.oncontextmenu = alterarColor;

</script> 

un poco mas avanzado, sin usar let y mostrando en alert a que color se cambio


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

    <script>

        var pantalla = document.querySelector("canvas");
        var pincel = pantalla.getContext("2d");
        var colores = ["blue", "red", "green"];
        var color = 0 ;
        pincel.fillStyle = "lightgrey";
        pincel.fillRect(0, 0, 600, 400);

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

        pantalla.onclick = dibujarCirculo;

        function alterarColor() {
            color++;
            if (color >= colores.length) {
                color = 0;
            }
            alert("Funcionó se cambio a: " + colores[color]);
            return false;

        }

        pantalla.oncontextmenu = alterarColor;

    </script>

Eduardo, similar presente la alteración del color, pero en vez de una alerta coloque un console.log ya que de esa forma no interrumpe la interacción del usuario. alterar color