4
respostas

[Dúvida] inversão de ordem das funções

Oi, gente. Tudo bem? Minha dúvida é a seguinte: posso inverter as ordens das funções no código?

Meu código:

<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);

    var cores = ["blue", "red", "green"]
    var indiceCorAtual = 0;

    function desenhaCriculo() {
        // botão esquerdo (oncontextmenu) = desenha o circulo

        indiceCorAtual++;

        if (indiceCorAtual >= cores.length) {
            indiceCorAtual = 0;
        }
        return false;
    }

    tela.oncontextmenu= desenhaCriculo;

    function mudaCor(evento) {
        // botão direito (onclick) = muda a cor do circulo

        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 = mudaCor;

</script>

Código do professor:

<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);
  var cores = ['blue', 'red', 'green']
  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() {
    indiceCorAtual++;
    if (indiceCorAtual >= cores.length) {
      indiceCorAtual = 0; // volta para a primeira cor, azul
    }
    return false; // para não exibir o menu padrão do canvas
  }
  tela.oncontextmenu = mudaCor;
</script>
4 respostas

Não fiz o teste ainda. Mas, acredito que trocando a ordem var cores = ['red', 'blue', 'green'], você consegue mudar a sequencia.

Deixei o código sortear qual cor seria aplicada ao circulo cada vez que clicar no bolão direito atribuindo indiceCorAtual = Math.round(Math.random() * 3);

oi, Ricardo.

a minha dúvida é sobre a ordem em que aparecem no código as funções desenhaCirculo e mudaCor.

eu alterei a ordem (em comparação com o código do professor) e, ao meu ver, continua a mesma coisa.

Acredito que como a função mudaCor só está sendo chamada no final do código, não está vai sofrer a influência.