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

Help - Como alterar a cor das pétalas

Eu fiz o código dessa forma. Fui tentando sem olhar a versão do instrutor, mas mesmo alterando a cora das pétalas, a minha prevaleceu a cor do centro. Olhei os códigos, meu e do instrutor, mas não consegui entender a diferença que fez as pétalas mudarem. Não sei se tem relação com o fato de não ter colocado todos os parâmetros na primeira chamada da função. Tentei alterar, mas quando altero a flor some. OBS. Quis colocar as pétalas só em amarelo. Deixe 15 pixels se separação, não 20 como o instrutor. Foi apenas por gostar da menor distância.

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

<script>

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

    function desenhaCirculo(x, y, raio, cor) {

        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2*3.14);
        pincel.fill();
    }

    desenhaCirculo(300, 200, 2*3.14, 'red');
    desenhaCirculo(300, 215, 10, 2*3.14, 'yellow');
    desenhaCirculo(315, 200, 10, 2*3.14, 'yellow');
    desenhaCirculo(300, 185, 10, 2*3.14, 'yellow');
    desenhaCirculo(285, 200, 10, 2*3.14, 'yellow');



</script>
2 respostas

O problema ocorre pois você está passando um argumento a mais nas 04 últimas chamadas do método: desenhaCirculo(300, 215, 10, 2*3.14 , 'yellow')

    desenhaCirculo(300, 200, 2*3.14, 'red');//certo
    desenhaCirculo(300, 215, 10, 2*3.14, 'yellow');//argumento extra
    desenhaCirculo(315, 200, 10, 2*3.14, 'yellow');//argumento extra
    desenhaCirculo(300, 185, 10, 2*3.14, 'yellow');//argumento extra
    desenhaCirculo(285, 200, 10, 2*3.14, 'yellow');//argumento extra

Com as chamadas desta forma um valor numérico (2*3.14) está sendo atribuído para a variável cor e, consequentemente, o comando pincel.fillStyle não está sendo executado corretamente. Para solucionar este problema basta remover os argumentos desnecessários que estão sendo passados ao método, no caso:

    desenhaCirculo(300, 200, 10, 'blue');
    desenhaCirculo(300, 215, 10, 'yellow');
    desenhaCirculo(315, 200, 10, 'green');
    desenhaCirculo(300, 185, 10,  'orange');
    desenhaCirculo(285, 200, 10, 'red');
solução!

Muita gratidão Leonardo. Consertei o código e alterei o raio para que as pétalas ficassem maiores que o miolo. Agora funcionou =)

    desenhaCirculo(300, 200,  2*3.14, 'red');
    desenhaCirculo(300, 215,  3*3.14, 'yellow');
    desenhaCirculo(315, 200,  3*3.14, 'yellow');
    desenhaCirculo(300, 185,  3*3.14, 'yellow');
    desenhaCirculo(285, 200,  3*3.14, 'yellow');