1
resposta

Porque a opção input.value para mudança de cor não funcionou quando clico no alvo

<!DOCTYPE html>
<html lang="pt-Br">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Tiro Alvo</title>
</head>
<body>

  <canvas width="800" height="600"></canvas>
  <input type="color" >

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

    pincel.fillStyle = 'pink';
    pincel.fillRect(0, 0, 600, 400);

    var raio = 10;

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

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

    desenhaCirculo(300,200, raio + 20, 'black'); // maior círculo
    desenhaCirculo(300,200, raio + 10, 'white');
    desenhaCirculo(300,200, raio, 'red'); // menor circulo

    function dispara(evento) {

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;

        if((x>300 - raio) && (x<300+raio && (y>200-raio && y < 200 + raio))){
            pincel.fillStyle = "input.value";
            pincel.beginPath();
            pincel.arc(x,y,5,0,2*3.14);
            pincel.fill();
        }
    }

    tela.onclick = dispara;</script>
</body>
</html>
1 resposta

Oi Bruna! Tudo bem?

Desculpe a demora pra responder esse tópico, a única coisa que você tem que trocar é tirar as aspas do input.value pois com as aspas você está passando literalmente as palavras "input.value" e não o seu valor, que seria a cor desejada.

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software