3
respostas

queria que enquanto uma bolinha e movesse a outra pulsasse no meio.

<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) {



        pincel.fillStyle = 'blue';

        pincel.beginPath();

        pincel.arc(x, y, raio, 0, 2 * Math.PI);

        pincel.fill();

    }



    function limpaTela() {



        pincel.clearRect(0, 0, 600, 400);

    }



    var x = 20;



   var pulso = 20

function pulsa(){

    limpaTela();
     desenhaCirculo(300,200,pulso);
     if(pulso >= 30){
        direcao = -1;
     }else if(pulso <= 20){
        direcao = 1;
     }
    x+= direcao
}
function atualizaTela(){



    limpaTela();

    desenhaCirculo(x, 20, 10);



    if(x >= 600){

        direcao = -1;

    }else if(x <= 20){

        direcao = 1;

    }



    x+= direcao; 
    pulsa();
}  ;
    setInterval(atualizaTela, 10);


</script>
3 respostas

Boa tarde, Felipe! Como vai?

Veja que no seu código, embora vc tenha declarado a função pulsa(), em momento nenhum vc a invoca. Sendo assim, o que deve estar acontecendo é que apenas uma bola aparece se movendo de um lado pro outro. Estou correto?

era isso tambem heheh; Dei uma ajeitadinha mas mesmo assim nada.

Oi Felipe você tá bem próximo só faltava dar umas ajeitadinhas:

<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) {
        pincel.fillStyle = 'blue';
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * Math.PI);
        pincel.fill();
    }

    function limpaTela() {
        pincel.clearRect(0, 0, 600, 400);
    }

    var x = 20;
    var pulso = 20
    var direcao=1;
    var tamanho=1;

    function atualizaTela(){
        limpaTela();
        desenhaCirculo(x, 20, 10);
        desenhaCirculo(300,200,pulso);
        if(pulso >= 30){
           tamanho = -1;
        }else if(pulso <= 20){
           tamanho = 1;
        }
        pulso+= tamanho;
        if(x >= 600){
            direcao = -1;
        }else if(x <= 10){
            direcao = 1;
        }
        x+= direcao; 
    }

    setInterval(atualizaTela, 10);
</script>

Perceba essa linha:

pulso+= tamanho;

e essa :

x+= direcao;

além disso como os eventos são simultaneos coloquei na função chamada no setInterval, essa é uma solução.

Espero ter ajudado e bons estudos.