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

03_06 Cambiando color

Hola un gusto saludarlos.

Gracias a la ayuda del instructor logre entender la solución.

Mi pregunta es la siguiente.

La variable var colores = ["blue", "red", "green"] esta declarada fuera de la función dibujarCirculos y aun así la función la reconoce en su definición.

Antes entendí por un compañero que al no declarar una variable, JavaScript la pasa a global y así se entendería que la reconoce dentro de la función dibujarCirculos, pero la estoy declarando afuera y ya no seria global ni tampoco la paso como parámetro como para usarla dentro de la función dibujarCirculo. Estuve probando asignarle el valor a una nueva variable var color = colores[indiceColorActual] fuera de la función dibujarCirculo y ponerla dentro pero no resulta, entiendo color seria una cadena y colores es un conjunto de cadenas.

Espero se entienda mi pregunta saludos. Gracias.

<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; // comienza con blue
    var color = colores[indiceColorActual];

    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
    }

    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.oncontextmenu = alterarColor;

    pantalla.onclick = dibujarCirculo;

</script> 

////////// respuesta de tutor //////

<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; // comienza con blue

    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> 
1 respuesta

Hola Esteban, espero que estés bien! Gracias por compartir tu código con nosotros. Si tiene alguna pregunta sobre el contenido del curso, estamos aquí para ayudarlo. ¡Sigue practicando! ¡Vamos juntos! :)

Si este post te ayudó, por favor, marca como solucionado ✓.