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

Dúvidas na etapa ''Desenhando com o mouse''

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

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

    var draw = false;

    function desenhaCirculo(evento) {

        if(desenha) {
            var x = evento.pageX - tela.offsetLeft;
            var y = evento.pageY - tela.offsetTop;
            pincel.fillStyle = color[contador];
            pincel.beginPath();
            pincel.arc(x, y, raio, 0, 2 * 3.14);
            pincel.fill();
        }

        if(evento.shiftKey && raio < 40) {
            raio = raio + 5;
        }
        if(evento.altKey && raio > 5) {
            raio = raio - 5;
        }
    }

    tela.onmousemove = desenhaCirculo;

    function habilitaDraw() {
        draw = true;
    }

    function desabilitaDraw() {
        draw = false;
    }

    function mudaCor() {
        contador++;
        if(contador>2) {
            contador = 0;
        }
        return false;
    }

    tela.onmousedown = habilitaDraw;
    tela.onmouseup = desabilitaDraw;

    var raio = 5
    var color = ['blue', 'red', 'green']
    var contador = 0;
    tela.oncontextmenu = mudaCor;

</script>

Então, eu comecei a escrever o código desse exercício já com o as outras implementações da aula (diminuir e aumentar o círculo, mudar a cor), até onde eu conferi, todo meu código bate com o sugerido, mas simplesmente não funciona. É algum problema na ordem ou coisa do gênero?

3 respostas

Olá Gustavo, na função desenhaCirculo o primeiro if está:

if(desenha) {

Altera para

if(desenhaCirculo) {

portanto o bloco do if ficaria da seguinte forma:

if(desenhaCirculo) {
            var x = evento.pageX - tela.offsetLeft;
            var y = evento.pageY - tela.offsetTop;
            pincel.fillStyle = color[contador];
            pincel.beginPath();
            pincel.arc(x, y, raio, 0, 2 * 3.14);
            pincel.fill();
        }

Espero ter ajudado

solução!

Você mudou as variáveis para inglês e não mudou em outros lugares. Confira sua variável draw, a que você mudou. No if esta referenciando o nome antigo.

if(desenha) {

Opa, erro meu no auxílio,

Obrigado pela correção Flavio.