2
respostas

Criar alerta informando a cor selecionada

Bom dia colegas,

Ao fazer o código, inclui um alerta para cada vez que a cor fosse alterada. No alerta, coloquei a mensagem ("Cor atual é:" + cores[corAtual]). Ocorre que a a mensagem funciona para a segunda e a terceira cor, entretanto para a primeira o alerta apresenta a seguinte mensagem: Cor atual é: undefined. Gostaria de entender o motivo para isso ocorrer e como corrigir.

Obrigada pela ajuda!!! Dani

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

<script>

tela = document.querySelector ("canvas");
var pincel = tela.getContext('2d');

pincel.fillStyle = "lightgrey";
pincel.fillRect (0, 0, 600, 400);

var cores = ['blue', 'red', 'yellow'];
var corAtual = 0;


function desenhaCirculo(evento){


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

}


function mudaCor() {

    corAtual ++;

    alert ("Cor atual é: " +  cores[corAtual]);

    if (corAtual >= 3){

        corAtual = 0;
    }

    return false;
}


tela.onclick = desenhaCirculo;

tela.oncontextmenu = mudaCor; 


</script>
2 respostas

Oi Daniela, tudo bem? :)

Dando uma olhada no seu código eu pude perceber que você tratou corretamente para que quando a corAtual chegasse num valor maior ou igual a 3 a contagem reiniciasse. Porém, o único "pecado" (hahaha) do seu código foi colocar o alert antes do if (corAtual >= 3). Ou seja, a janela de alerta imprimia primeiro a cor na posição 3 do array (que é null/undefined, pois o array vai até a posição 2) e depois reiniciava.

Portanto, a única correção a ser feita é colocar esse alert após o if, dessa forma:

function mudaCor() {
    corAtual ++;
    if (corAtual >= 3){
        corAtual = 0;
    }
    alert ("Cor atual é: " +  cores[corAtual]);
    return false;
}

Espero ter ajudado!

Olá José Henrique,

Muito obrigada pela ajuda! Ainda estou me acostumando com o fato de que um pequeno detalhe faz total diferença no resultado....kkkk

Bom final de semana! Dani