Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Fiz de uma maneira mais curta e queria explicação

Bom, fiz o mesmo código mas com umas diferenças e queria entender porque a solução está daquela forma.

Meu código:

    function desenhaCirculo(evento) {

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

        console.log(x + ',' + y);

       if (evento.shiftKey && raio <= 50) {

         raio = raio + 5

        }

        if (evento.altKey && raio > 10){

                raio = raio - 5;
        }

Na solução, na parte do if tem uma situação repetida, é necessária colocar? Por que foi colocada?

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

        } else if(evento.altKey && raio - 5 >= 10) {
            raio = raio - 5;

"raio -/+ 5 >= 10" e dentro do if repete-se isso.

1 resposta
solução!

E aí, Flávia!

Na solução é verificado se mesmo ao somar 5 ao raio, ele continua menor ou igual a 40. Caso seja, então raio = raio + 5;, caso não, nada é feito.

O mesmo vale pra segunda condição. Se ao subtrair 5 do raio, ele valer 10 ou mais, é feita uma subtração, ou seja, raio = raio - 5;

No exemplo que você fez, não é verificado se o raio é menor ou igual a 50 mesmo se somado 5. Vou explicar: No seu exemplo, vamos supor que o valor do raio seja 48. A verificação de raio <= 50; é verdadeira, então raio = raio + 5; e ele se torna 53, certo?

Agora o mesmo exemplo pelo código da solução: Com o mesmo valor de raio (48), será verificado se o raio é menor ou igual a 40 somando 5, então a verificação não será se 48 <= 40. Será 53 <= 40.

No fim das contas o código não está repetido, ele está apenas inserindo um cálculo a mais na condição, que faz total diferença no resultado.

Na solução, o valor da variável raio é somado a + 5, e o resultado desse cálculo é que vai para verificação de menor ou igual. No segundo caso, o valor da variável é reduzido em - 5, e o resultado desse cálculo é que vai para verificação de maior ou igual.

O que acontece dentro dos parênteses no if é uma verificação de condição. Ele verifica, mas não altera os dados. O que acontece depois é um processamento. Ele altera os dados.