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

O meu não funciona...nem copiando a resposta do instrutor...Onde está o problema

Meu código não mostrava nada na tela desde o início...achei estranho. Acabei desistindo e olhei o código sugerido pelo instrutor...como eu havia imaginado, meu código estava bem parecido...

Fui modificando e não resolvia. Por fim, copiei e colei a resposta do instrutor e mesmo assim nada aparece na tela...

Alguém consegue descobrir o problema?

Não indica nenhum erro...

<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 mostraBrasil = true;

function trocaBandeira() {

    if(mostraBrasil) {
        desenhaBandeiraBrasil();
    } else {
        desenhaBandeiraAlemanha();
    }
    mostraBrasil = !mostraBrasil;
}

setInterval(trocaBandeira, 3000);

</script>
7 respostas
solução!

Rodei aqui exatamente o seu código e funcionou.

Apenas que o primeiro ciclo de 3 segundos não mostra nada, porém depois disto aparecerão as bandeiras.

Aguarde mais um tempo ou tente reduzir o delay para visualizar melhor.

Obrigado pelo feedback Fillipe.

Aqui no meu computador não aparece nada, nunca. Inclusive já reiniciei o computador, tentei abrir o arquivo em outros navegadores e nada!

Pelo menos agora eu sei que o problema não é o código.

Obrigado novamente.

De que forma você está rodando este script?

A forma mais directa é salvar como .html e abrir com qualquer navegador.

Eu havia salvo o arquivo como .html assim que o criei. Como sempre. Mas seguindo sua observação, copiei o código e salvei em um novo arquivo .html e funcionou!!!

Ufa!

As vezes coisas assim acontecem. Só sinto pelo tempo que perdi tentando fazer meu código funcionar e na verdade o problema estava no arquivo...kkk.

Mais uma lição aprendida. Obrigado pela ajuda. Abração.

Felipe Mirando, você tem alguma forma de otimizar o codigo evitando esses 3 segundos inicias sem bandeira nenhuma ?

Vitor Camargo, acho que a forma mais directa é chamar a função antes do setInterval:

trocaBandeira()
setInterval(trocaBandeira, 3000);

Boa ideia Felipe. Legal!!