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

tempo utilizando else e if

Utilizei else e if, mas tenho uma duvida na linha 59 onde só consegui fazer funcionar quando estipulei o limite ficando "else if (tempo >=4 && tempo <=6)", caso eu colocar sem o tempo <=6 a bandeira não volta como se ignorase o próximo else que indica "tempo = 0".

Conseguem me ajudar a entender o motivo disso?

<meta charset="utf-8">

<!-- bandeiras.html -->

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

<script>

    function desenhaBandeiraBrasil() {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

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

        pincel.fillStyle="yellow";
        pincel.beginPath();
        pincel.moveTo(300, 50);
        pincel.lineTo(50, 200);
        pincel.lineTo(550, 200);
        pincel.fill();

        pincel.beginPath();
        pincel.moveTo(50, 200);
        pincel.lineTo(300, 350);
        pincel.lineTo(550, 200);
        pincel.fill();

        pincel.fillStyle="darkblue";
        pincel.beginPath();

        pincel.arc(300, 200, 100, 0, 2* 3.14);
        pincel.fill();
    }


    function desenhaBandeiraAlemanha() {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.fillStyle = 'black';
        pincel.fillRect(0, 0, 600, 133);

        pincel.fillStyle = 'red';
        pincel.fillRect(0, 133, 600, 133);

        pincel.fillStyle = 'yellow';
        pincel.fillRect(0, 266, 600, 133);
    }

    var tempo = 0;

    console.log(tempo);

    function trocaBandeira(){

        if(tempo<=3){
            desenhaBandeiraBrasil();
        } else if (tempo >=4 && tempo <=6){
            desenhaBandeiraAlemanha();
        } else if (tempo >6) {
            tempo = 0;
        }
        tempo++;

    }

    setInterval(trocaBandeira, 1000);

</script>
2 respostas
solução!

Felipe,

Veja que o código é executado na ordem em que foi escrito.

  1. Você checa se o tempo <=3
    1. você restringe nesse intervalo [0,3]
  2. Senão
    1. Se o tempo é >=4 e <=6
      1. você restringe nesse intervalo [4,6]
  3. Senão
    1. Se o tempo é > 6
      1. você restringe nesse intervalo [7, +]

Ou seja, se você colocar no primeiro ELSE IF (2) APENAS >=4 e NÃO delimitar <=6, TUDO que for maior ou igual a quarto, só irá executar desenhaBandeiraAlemanha() e JAMAIS executará o último ELSE IF (3) , pois antes dele ser acessado a regra já foi cumprida ( >=4).

Espero ter ajudado, bons estudos.

Obrigado, realmente entendi o que houve. Muito obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software