No exercício da bandeira, entendi perfeitamente a solução apresentada. Eu havia pensado em a cada milisegundo (a cada UM milisegundo), incrementar o tempo em 1 milisegundo, o que parece lógico, mas o meu programa roda muito devagar e demora bastante tempo para trocar as bandeiras.
criei uma variável incremento (que vai de um em um, mas fui testando outros valores..)
ACHO que a resposta do porque não dá certo se deve ao fato de o tempo (real) para processar uma instrução não seja irrelevante perto de 1 milisegundo..é isso? Ou algum conceito meu está errado.
(obs, quando eu coloquei o incremento de 100, bem como no tempo em setInterval, foi quando chegou mais perto de 3 segundos).
Algum oráculo, por gentileza.. Obrigado, abraços.
Segue o código:
<canvas width="600" height="400"></canvas>
<script>
/*Você deve mostrar a bandeira do Brasil por 3 segundos e depois da Alemanha,
sempre intercalando! Para tal, tente escrever uma função trocaBandeira e use
a função setInterval para chamá-la a cada 3 segundos.*/
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);
}
//só daqui para baixo é diferente, mas copiei o código todo de qualquer forma
function trocaBandeira() {
if (tempo <= 3000) {
desenhaBandeiraBrasil();
tempo = tempo + incremento;
} else if (tempo > 3000 && tempo <= 6000) {
desenhaBandeiraAlemanha();
tempo = tempo + incremento;
} else if (tempo > 6000) {
tempo = 0;
}
}
var tempo = 0;
var incremento = 1;
setInterval(trocaBandeira, 1);
</script>