1
resposta

Solução estranha, mas funcionou.

Então, consegui solucionar a questão (não como o professor sugeriu usando as boleanas que eu preciso estudar mais), mas me intrigou a demora para iniciar. (o que não achei ainda aqui no forum a explicação da inicialização). Então, eu resolvi (de forma muito simples) a demora para aparecer as imagens. Mas aí surge outro problema, demora (acho que uns 5 seg.) para iniciar a troca. Então, não está 100% ainda.

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

function limpaTela() {

        pincel.clearRect(0, 0, 600, 400);
    }

function trocaBandeira() {
    setInterval(desenhaBandeiraBrasil,3000);
    setInterval(desenhaBandeiraAlemanha,6000);
}
desenhaBandeiraBrasil();
trocaBandeira();

</script>
1 resposta

Olá Róger! Tudo certo? Espero que sim. 🙂

Desculpe pelo atraso no retorno.

O que acontece é que as duas funções setInterval() estão se sobrepondo ao serem executadas.

O objetivo da utilização da função setInterval() é criar um loop (laço) de execução do código que estiver como 1° parâmetro, colocando um atraso definido pelo seu 2° parâmetro. Dessa forma, nesse caso, não é uma boa prática colocar duas funções setInterval()seguidas uma da outra.

Por isso (e pela organização do código), que o professor decidiu criar uma função específica apenas para realizar a troca da bandeira e "chama-lá" dentro da setInterval().

A seguir, o trecho de código de execução feito da forma indicada pelo professor;

var mostraBrasil = true;

function trocaBandeira() {

    if (mostraBrasil == true) {
        desenhaBandeiraBrasil();
        mostraBrasil = false;
    } else {
        desenhaBandeiraAlemanha();
        mostraBrasil =true;
    }

}

setInterval(trocaBandeira, 3000);

 

Espero ter ajudado! Quaisquer dúvidas, estou à disposição. 😉

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

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