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>