Mas o problema é que só sei quando é para mover para a direita ou esquerda dentro do loop de input, mas o setFrameSequence não pode estar dentro do loop, porque ele será “resetado” e somente a primeira figura da transição é mostrada!
switch (direction) {
case 'u': {
this.move(0, -(MOVE_SIZE));
break;
}
case 'd': {
this.move(0, MOVE_SIZE);
break;
}
case 'r': {
this.setFrameSequence(this.sequenceWalkRight);
this.move(MOVE_SIZE, 0);
break;
}
case 'l': {
this.setFrame(1);
this.setFrameSequence(this.sequenceWalkLeft);
this.move(-(MOVE_SIZE), 0);
break;
}
}
this.nextFrame();
Existe uma sequência para movimentar para a direita e outra sequência para movimentar para a esquerda.
Mas o inconveniente é que a movimentação só acontece quando as teclas direcionais cima e baixo são pressionadas!
Você tentou algo como eu coloquei acima ?? Algo tipo:
case 'r': {
if(flag!='r'){
this.setFrameSequence(this.sequenceWalkRight);
flag='r';
}
this.move(MOVE_SIZE, 0);
break;
}
case 'l': {
if(flag!='l'){
this.setFrameSequence(this.sequenceWalkLeft);
flag='l';
}
this.move(-(MOVE_SIZE), 0);
break;
}
Sem tem o fonte pra rodar e testar fica difícil, mas veja bem se os passos estão certos, olha que no case ‘l’ tu seta s frame no 1 e no mesmo laço ele já pega o próximo.
Se o problema ea ele ficar resetando usar uma flag funciona. Mas agora se o problema é dentro do case então tem que ver o que acontece, te que ver se ele não está mudando a sequencia pra de frames para a que tu está setando ou se ele não está nem movimentando o sprite pela tela. Tenta colocar um print dando um getFrame, pra ver se é realmente o que deveria aparecer, tente isso colocando antes e depois do nextframe.