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

Onde esta o meu erro?

Boa noite, Quero saber onde errei? Só aparece na tela o esquadro "yellow"

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

<script>

    function desenhaEsquadro(xa,ya,xc,yc,cor){

        var tela = document.querySelector("canvas");
        var pincel = tela.getContext('2d');

        pincel.fillStyle = 'lightgray';
        pincel.fillRect(0, 0, 800, 600);

        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.moveTo(xa, ya);
        pincel.lineTo(xa, yc);
        pincel.lineTo(xc, yc);
        pincel.fill();

    }

    var cores = ["black","yellow"];
    var pontoA = [50, 50, 100, 175];
    var pontoC = [400, 400, 275,350];

desenhaEsquadro (50,50,400,400,"black");
desenhaEsquadro (100,175,275,350, "yellow");

</script>
2 respostas
solução!

Bom dia. O erro é porque na sua função desenhaQuadros você está criando um canvas cinza sempre que chama a função. Por exemplo, o programa vai iniciar, executar a primeira ocorrência da função criando um canvas cinza e um triângulo preto, logo depois ele vai executar a segunda ocorrência da função, vai criar outro canvas cinza e sobrepor o que possuía o triângulo preto criando o triângulo amarelo. Para resolver isso basta criar o canvas cinza fora da função como coloquei abaixo.

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

<script>

    var tela = document.querySelector("canvas");
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 800, 600);

    function desenhaEsquadro(xa, ya, xc, yc, cor) {

        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.moveTo(xa, ya);
        pincel.lineTo(xa, yc);
        pincel.lineTo(xc, yc);
        pincel.fill();

    }

    //var cores = ["black","yellow"];
    //var pontoA = [50, 50, 100, 175];
    //var pontoC = [400, 400, 275,350];

    desenhaEsquadro(50, 50, 400, 400, "black");
    desenhaEsquadro(100, 175, 275, 350, "yellow");

</script>

Boa tarde

Obrigada Mateus.

Foi bem didático.