Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Cor undifined

Meu código ficou bem parecido, com algumas pequenas alterações, como por exemplo, gostaria de informar o usuário com um alert qual é a cor que está selecionada no momento, antes dele necessariamente aplicar sobre o canvas, porém ao retornar para a cor azul, ao invés dele informar que se trata da mesma, o alert informa que a cor é undefined, porém a mesma está correta ao aplicar no canvas, por que isso acontece e como poderia solucionar esse problema?

<script>
        var sheet = document.querySelector('canvas');
        var brush = sheet.getContext('2d');

        colors = ['blue', 'red', 'green'];
        i = 0;

        function drawCircle (event) {
            var x = event.pageX;
            var y = event.pageY;

            brush.fillStyle = colors[i];
            brush.beginPath();
            brush.arc(x, y, 10, 0, 2 * 3.14);
            brush.fill();
        }

        sheet.onclick = drawCircle;

        function changeColor() {
            i++;
            alert('Now the color of brush is ' + colors[i]);
            if(i >= 3){
                i = 0;
            }
            return false;
        }

        sheet.oncontextmenu = changeColor;
    </script>
1 resposta
solução!

Oi Caio

Basta mover o alert de lugar, já que a lógica de retornar para a primeira posição está dentro do If basta colocar o alert depois do IF assim:

function changeColor() {
    i++;
    if (i >= 3) {
      i = 0;
    }
    alert('Now the color of brush is ' + colors[i]);
    return false;
  }

O problema acontece por que ele soma e busca o índice 3, mas não existe o índice 3 no array das cores, só vai até o 2, lembre-se que o array começa no índice 0.

colors[0] >> blue

colors[1] >> red

colors[2] >> green