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

Por que o indiceCorAtual é maior e igual a cores.length e não menor e igual?

  var cores = ['blue', 'red', 'green']
    var indiceCorAtual = 0; // começa com blue
    if(indiceCorAtual >= cores.length) {
        indiceCorAtual = 0; // volta para a primeira cor, azul
    }

    return false; // para não exibir o menu padrão do canvas
}

Se a var indiceCorAtual recebe 0 e cores equivale a 2 (considerando que o array começa a contar do 0), para que dê true, precisaria que a var indiceCorAtual fosse menor que a var cores. Mas a solução opta por um false ao invés de um true, por quê?

3 respostas

Anna,

Cola o código aqui para avaliarmos.

solução!

Eu acho que entendi. Enquanto indiceCorAtual for menor que cores.length (falso), o indiceCorAtual não volta pro zero, a partir do momento em que ele é maior e igual a cores.length (verdadeiro), indiceCorAtual volta pro zero (ou seja, azul) e a repetição acontece.

  var cores = ['blue', 'red', 'green']
    var indiceCorAtual = 0; // começa com blue
    if(indiceCorAtual >= cores.length) {
        indiceCorAtual = 0; // volta para a primeira cor, azul
    }

    return false; // para não exibir o menu padrão do canvas
}

Acho que minha grande dificuldade em entender a lógica, é que eu simplesmente não estava enxergando que o var indiceCorAtual muda de valor a cada clique no botão esquerdo.

Isso mesmo Anna...

Quando o indiceCorAtual for maior ou igual ao tamanho da lista de cores feremos ele voltar a ser zero para pegar a primeira cor da lista.

Uma forma de testar que uso é sempre colocar um console.log(cores[indiceCorAtual]) e abrir o console do navegador para ir olhando as mudanças das cores ocorrendo.

Adiciona outras cores para visualizar que independente da quantidade de cores o código irá funcionar por conta da comparação ser em cima do tamanho da lista.