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

E se eu quiser que a bolinha ande e pulse com tempos diferentes?

Estava explorando o que aprendi na aula e tentei fazer minha bolinha andar e pulsar ao mesmo tempo. Consegui com sucesso transformando a função de andar e pulsar em uma só.

Mas queria ir além e fazer minha bolinha pulsar e andar em tempos diferentes, pra que eu pudesse fazer ela pulsar mais rápido ou devagar sem que isso afetasse a velocidade do movimento de ir e voltar na tela.

Entretanto, apesar das tentativas, nada deu certo. Tem como fazer isso? Pesquisei na internet sobre, mas não achei nada que fosse esclarecedor e comecei a me questionar se isso seria, de fato, possível.

Aguardo :)

4 respostas

Eai Daniela, tudo bom? Você disse que fez alguns testes mas não deu certo. Vamos ver se consigo te ajudar. Não tenho certeza se eu entendi o que você quis dizer com tempos diferentes, mas vou supor que vc quer que em alguns momentos a bola ande, em outros ela pulse e em outros ela ande e pulse ao mesmo tempo. É isso?

Você disse que conseguiu fazer ela andar e pulsar quando transformou essas duas ações em uma única função. Bom isso não é uma coisa muito legal de se fazer. O ideal é que você tivesse duas funções separadas, uma pra cada ação que vc quer fazer.

Tendo duas funções, uma para andar e outra para pulsar você pode fazer a função atualizaTela chamar as outras duas

Se você chamar apenas a função pulsar a bolinha irá apenas pulsar. Se chamar a função andar a bolinha deve andar e se chamar as duas ela deve fazer as duas coisas ao mesmo tempo.

Oioi, não é bem isso. Vou tentar ser mais clara.

Quando juntei as funções, meu objetivo era fazer com que a bolinha pulsasse e andasse ao mesmo tempo. Não soube como ter este resultado com as funções separadas, mas juntando elas funcionou.

Meu novo objetivo é poder mexer no intervalo de tempo que chamo essas funções como coisas distintas. Por exemplo, chamar a função que faz a bolinha andar num intervalo de 10 milissegundos e chamar a função que a faz pulsar num intervalo de 30 milissegundos, dando como efeito final uma bolinha que anda constantemente porém pulsa mais devagar.

Quero ter controle da velocidade de pulso e de andamento da minha bolinha de forma separada, mexer na velocidade de uma sem que isso afete a outra enquanto a bolinha faz as duas coisas ao mesmo tempo.

Imagino que pro meu novo objetivo eu precise separar minhas funções novamente, porém, como eu faço pra aplicar duas funções na mesma bolinha? Até agora, nos meus códigos, chamei a função de desenhar a bolinha dentro da função da ação em questão, só que se eu chamar dentro de duas funções separadas, terei duas bolinhas fazendo coisas diferentes e não é isso que eu quero.

Consegui ser mais clara? :)

solução!

Sim, vc foi mais clara agora! Bom, você já percebeu que desenhar a bolinha é uma terceira ação e deve ter sua própria função. assim vc teria uma função atualizarTela que chama as funções:

  • limpaTela
  • moverCirculo
  • pulsarCirculo
  • desenharCirculo

Pra fazer isso as funções de mover e pulsar vão alterar apenas as variáveis X, Y e raio. E a função de desenhar vai usar essas variáveis para desenhar a bolinha no lugar certo e do tamanho certo.

Com relação a velocidade. Pelo que você falou vc queria ter duas funções de setInterval uma sendo chamada a cada 10 milisegundos e outra a cada 30.

Não é a melhor solução pq se vc quiser mudar novamente a velocidade de movimento ou pulsar da bolinha vc teria que mexer nesse setInterval e isso poderia afetar outros comportamentos.

Se você quer poder alterar a velocidade pode fazer isso usando apenas variáveis. Para mover mais rápido vc precisa apenas somar um número maior na variável X ou Y. Ou seja ao invés de somar 1 vc vai somar 2 ou 3.

No caso de pulsar é a mesma coisa, vc só precisa aumentar ou diminuir o fatorCrescimento se quiser que ela pulse mais devagar o fator de crescimento pode ser 0.5 ou 0.2.

Entendi, não tinha pensado nisso! Obrigada! :D