1
resposta

Troca Bandeira ( esta certo ou é uma gambiarra )

<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);
}
// A ordem é muito importante pois de invertela a badeira do Brasil não vai se sobrepor a bandeira da Alemanha
setInterval(desenhaBandeiraAlemanha , 3000);
setInterval(desenhaBandeiraBrasil, 6000)


</script>
1 resposta

Boa tarde Vitor, tudo certo?

Excelente trabalho! As ilustrações das suas bandeiras ficaram ótimas! Eu não diria que sua solução para que elas fiquem alternando é uma gambiarra, mas eu fiz de forma diferente:

O final do código ficou como

// Para manter as bandeiras se alternando igualmente:
let x = 1000;

function desenhaAlternado () {
    setTimeout( desenhaBandeiraBrasil, 0);
    setTimeout( desenhaBandeiraAlemanha , x) 
}

setInterval(desenhaAlternado, 2 * x)

Sendo assim, para mudar o tempo com que cada uma das bandeiras aparece basta mudar o valor da variável x.

Continue assim e bons estudos!