Olá Matheus, tudo bem com você?
Isso acontece porque a lógica do seu programa contém alguns errinhos, vou te mostrar:
A nossa variável raio
começa com 50
Com a primeira verificação que é verdadeira:
if (raio == 50) {
raio = true;
}
Mudamos o valor do raio de 50 para true
, então ele deixa de ser número, e com isso ele só irá voltar a ter um valor nessa segunda verificação:
if (raio) {
raio++;
}
Isso porque o valor true, está associado ao número 1, então o que fizemos na verdade foi transformar o raio
de 50, para 1 e agora para 2
Dessa maneira o nosos programa irá continuar funcionando acrescentando de 1 em 1, pois qualquer número positivo é verdadeiro dentro dessa última verificação
Então o fluxo está basicamente assim:
E quando raio voltar a ser 50, pela verificação inicial voltará a ser 1, por isso que não importa o número que você estava colocando para o raio, pois na primeira verificação você jogava ele para 1, na verdade o que de fato está definindo o tamanho do raio é essa primeira verificação, se você colocar por exemplo:
if ( raio == 500)
Ele irá crescer até 500 e depois voltará a ser 1!
Dessa maneira esses 2 ifs nunca eram executados:
if (raio == 100) {
raio = false;
}
E por consequência do raio nunca valer false:
else {
raio--;
}
Para corrigir isso temos que fazer igual o instrutor e ter uma variável de controle de crescimento :)
Qualquer coisa estou a disposição Abraços e Bons Estudos!
Segue a explicação do Geovani ;-)
Ah sim, obrigado. Tinha esquecido que o operador logico tinha valor. Agora deu certo function processa(){ limpatela();
if(raio==50){
flag=true;
}else{
if(raio==100){
flag=false;
}
}
if(flag){
raio++;
}else{
raio--;
}
desenha(raio);
}
setInterval(processa,20);