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

nextFrame()

Surgiram duas dúvidas 1 -

function nextFrame(){
        moveFrame(frames[current], frames[++current]);
    }

Como que o script entende que é um loop? No meu entendimento o script passaria somente de frames0 para frames1 e pararia.

2 - Inspecionando o elemento vejo que depois que chega no frame9 ele não continua frame10, frame11, frame12 etc... Como ele entende que não existe mais frames?

5 respostas
solução!

Boa noite, Leodário! Como vai?

  1. Nessa aula o mestre Flávio chama o método nextFrame() dentro de um setInterval()! Por isso, o JavaScript chama esse método de 500 ms em 500 ms, funcionando como um loop.
    var sprite = createSprite('.sprite');
    setInterval(function () {
      sprite.nextFrame();
    }, 500);
  2. O instrutor vai resolver isso nos próximos vídeos criando um método hasNext(). É só seguir em frente que vc vai ver a solução para isso!

Grande abraço e bons estudos!

Salve Gabriel! Boa noite! Obrigado pela explicação.

A dúvida 1 entendi agora.

A dúvida 2 eu sei que ele delimitará o loop, mas o que eu gostaria de entender, quando eu atualizo a página e inspeciono o elemento de 500 em 500 milissegundos o elemento vai mudando a classe, o que até aí eu entendi.

<div class="sprite frame1"></div>
<div class="sprite frame2"></div>
<div class="sprite frame3"></div>
<div class="sprite frame4"></div>
<div class="sprite frame5"></div>
<div class="sprite frame6"></div>
<div class="sprite frame7"></div>
<div class="sprite frame8"></div>
<div class="sprite frame9"></div>

e depois volta ao estado inicial

<div class="sprite"></div>

Porém como não delimitamos o loop na teoria era para continuar incrementando

<div class="sprite frame10"></div>
<div class="sprite frame11"></div> etc....

Resumindo! Por que não continua incrementando?

Então, em relação a sua dúvida 2 é justamente como eu falei. Veja que nessa aula o mestre Flávio trata exatamente sobre esse comportamento que vc falou que deveria ocorrer e que efetivamente ocorre na prática! Ou seja, o seu raciocínio está correto! E essa situação começa a ser resolvida a partir dessa aula que eu linkei!

O instrutor vai criar uma função auxiliar chamada hasNext() que vai ser utilizada para limitar esse loop.

Grande abraço e bons estudos!

Também não entendi muito bem a questão do loop. Tudo bem que a função setInterval vai fazer repetir o código a cada meio segundo... Mas onde o código diz que a var "current" muda de 0 para 1, e de 1 para 2?

Parece que falta um "current++" no final da função para fazer sentido... A menos que isso esteja acontecendo em frames[++current].

Boa noite, Davi! Como vai?

A menos que isso esteja acontecendo em frames[++current].

É exatamente isso! A instrução ++current atualiza o valor da variável current.

Grande abraço e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software