Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

if(indiceCorAtual >= cores.length) não funciona

Olá, não consigo fazer essa parte do código funcionar:

 if(indiceCorAtual >= cores.length){ // só consigo quando coloco indiceCorAtual >= 3

            indiceCorAtual = 0; // volta para a 1ª cor.

        }

Porém como falo ai no código eu consigo quando troco por >= 3. Qual o erro? Segue o código todo:

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

<script>
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'grey';
    pincel.fillRect(0, 0, 600, 400);


    // Criando a variavel array das cores.
    var cores = ['blue', 'red', 'green']
    // Se cria uma variavel para dizer com qual cor começa.
    var indiceCorAtual = 0; // começa com blue

     function desenhaCirculo(evento) {

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        pincel.fillStyle = cores[indiceCorAtual];
        pincel.beginPath();
        pincel.arc(x, y, 10, 0, 2 * 3.14);
        pincel.fill();
        console.log(x + ',' + y);
    }

    tela.onclick = desenhaCirculo;

    function mudaCor(cores) {

        indiceCorAtual++; // Acrescentamos 1 para o array de cor indicar uma cor diferente
        // passamos o valor de indicoratuala para a variavel acima



        // Fazemos uma condição para quando os cliques passarem da quantidade de cores voltarmos a 0
        if(indiceCorAtual >= cores.length){ // só consigo quando coloco indiceCorAtual >= 3

            indiceCorAtual = 0; // volta para a 1ª cor.

        }

        //porque não consigo fazer o alert alterar as cores dessa forma
        alert("Você escolhe a cor: " + cores[indiceCorAtual]);

        if(indiceCorAtual == 0){
        alert('Você escolheu foi Azul');
            } if(indiceCorAtual == 1){
        alert('Você escolheu foi Vermelho');
            } if(indiceCorAtual == 2){
        alert('Você escolheu foi Verde');
         }

        return false;
        }


    tela.oncontextmenu = mudaCor;

</script>

Tentei fazer um alert falando a cor escolhida, porém não consigo com: cores[indiceCorAtual] só da forma mais verbosa como vocês podem ver no código. Alguma dica?

Obrigado...

2 respostas
solução!

Pablo, basta retirar o parâmetro "cores" da função mudarCor que funciona direitinho:

    function mudaCor() { // e não function mudaCor(cores)

Edilene obrigado, minha visão já estava viciada rsrs