Pessoal ja estamos quase acabado o basico!Este tutorial ira ensinar sobre cronometragem e movimento usando FP, relacionado com a iteracao que escolheu no inicio do game.ESCOLHENDO ITERACAOFP suporta dois tipos de iteracao:Iteracao fixaIteracao variavelQuando sua Engine inicia em sua Class Main, voce escolhe sua iteracao:package{ import net.flashpunk.Engine; public class Main extends Engine { public function Main() { super(800, 600, 60, false); } }}O quarto parametro no construtor da Engine, "fixed", atribui se a sua taxa de quadros vai ser fixa ou nao.Nos proximos passos estarei mostrando como usar a cronometragem e movimento baseando em que iteracao estamos usando. Mas antes de continuar e importante anotar que:Com iteracao fixa, tempo e em quadros(frames).Com iteracao variavel, tempo e em segundos.Isto porque uma iteracao fixa tenta rodar em uma taxa de quadros constantes( pro exemplo, 60 quadros por segundo). Com uma iteracao variavel nao importa, seu game ira iterar na velocidade que conseguir. Isto porque, enquanto usando iteracao variavel, sua cronometragem e movimento ira usar a propriedade FP.lapse para julgar quanto tempo passou desde o ultimo quadro.CRONOMETRAGEM BASICAcronometragem tem um papel muito importante no desenvolvimento de game. Uma coisa simples que voce ira usar com frequencia e contadores, que e basicamente variaveis que incrementam seu valor a cada quadro, voce pode ter alguns eventos atribuidos para quando o contador chegar a certo valor.Iteracao FixaSe voce esta usando uma iteracao fixa, seus contadores trabalham em quadros, entao um sistema simples de cronometragem ficaria assim:package{ import net.flashpunk.Entity; public class Player extends Entity { public function Player() { } public var time:int = 0; override public function update():void { time ++; if (time == 60) { // reinicia o contador depois de 60 quadros. time = 0; } } }}Entao basicamente, o codigo dentro de nosso "if" ira ser executado a cada 60 quadros. Se seu games tem a taxa de quadros de 60 por segundo, voce tera nosso "if" a cada 60 segundosIteracao VariavelQuando usamos uma iteracao variavel, seu contador trabalha em segundos, entao para o mesmo sistema iremos usar FP.elapsed assim:package{ import net.flashpunk.Entity; import net.flashpunk.FP; public class Player extends Entity { public function Player() { } public var time:Number = 0; override public function update():void { time += FP.elapsed; if (time >= 2) { // reinicia o contador depois de 2 segundos. time = 0; } } }}Este foi um pouco mais complicado.Primeiro, nossa variavel de tempo deve ser do tipo Number, porque estamos trabalhando com valores decimais.Segundo, ao inves de incrementar em 1 todo quadro, nos incrementamos por FP.elapse, que e o tempo em segundos que passou desde o ultimo quadro.Entao se continuarmos incrementando nossa variavel vai ultrapassar os dois segundos, por isso checamos se 2 segundos ja passaram.Dica: Se estamos criando um cronometro como no exemplo acima, aqui esta um jeito melhor de faze-lo:override public function update():void{ time += FP.elapsed; if (time >= 2) { time -= 2; }}Ao inves de atribuirmos 0 a variavel time, subtraimos pelo tempo que estamos calculando, assim os milessimos que seriam descartados serao reaproveitados na proxima iteracao.Assim voce tera um cronometro muito mais apurado!MOVIMENTACAO BASICANao iremos cobrir movimentacao