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

"else if" e não "else"

Uma dúvida que deve ser de muitos.

Se eu tirar o "if" do "else if" (código abaixo) o programa para de funcionar, nem mostra a bolinha mais, gostaria de uma explicação melhor, porque só o "else if" funciona e não somente o "else".

if( x > 600) {
            sentido = -1
        } else if (x < 0) { // <==== o "if" dessa linha.
            sentido = 1;
        }

Desde já obrigado pela ajuda.

5 respostas

Boa noite Felipe, eu acho que era para funcionar normalmente... Não entendi o que deu errado. Seria possível postar o código inteiro? Não sei se tem alguma relação, mas falta um ";" depois de "sentido = -1"

solução!

Felipe o else nesse caso não funciona porque a lógica do código e fazer a bolinha correr dentro do quadrado de 0 X 600 quando a bolinha encosta em alguma das bordas o contador precisa ir ao contrário do que estava indo para bolinha ficar dentro do quadrado, você pode até separar os 2 ifs que o código continuará funcionano, a vantagem de fazer com else if e que caso o primeiro if seja verdadeiro ele nem testa segundo if economizando processamento.

Maria, o código é o resultado do exercício.

Achei estranho não funcionar apenas com o ELSE, pode fazer o teste.

<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 sentido = 1;

    function atualizaTela() {

        limpaTela();

        if( x > 600) {
            sentido = -1
        } else if (x < 0) {
            sentido = 1;
        } 

        desenhaCirculo(x, 20, 10);
        x = x + sentido;
    }

    setInterval(atualizaTela, 10);

</script>

Carlos, obrigado.

Acho que entendi rs

E realmente, fazendo apenas assim:

if( x > 600) {
            sentido = -1
        }

        if (x < 0) {
            sentido = 1;
        }

funciona também =)

Ah sim! Só percebi depois da explicação do Carlos! kkkkkkk