Animação de sprites em J2ME

Olá galera, estou desenvolvendo um jogo em J2ME, porém sou novo nessa tecnologia. Já consegui montar o TiledLayer e tb fazer o personagem responder algumas entradas do teclado tipo virar para esquerda, direita abaixar, levantar, e também mover o personagem de um lado para outro na tela, porém o personegem possui movimentos, como movimento de caminhar, correr, pular, e não estou conseguindo criar a animação da movimentação do personagem, eu consigo setar o frame inicial, consigo setar, o frame da direita, esquerda e tal. Mas a animação não. O có digo q eu tento setar a animação é o seguinte:

...
private int input()
{
int keyStates = getKeyStates();
sprite.setFrame(2); // por exemplo

if((keyStates & LEFT_PRESSED) != 0)
   sprite.setFrame(4); // por exemplo
   sprite.setFrameSequence(walk); // no caso "walk" é o array de inteiros em que eu setei a animação
   sprite.next();
...
}

...

Usando este código a posição inição do personagem funciona normalmente, porem qdo pressiono “esquerda” que nesse cado é a primeira tecla do método, as teclas seguintes não interagem sobre os frames iniciais, e sim sobre a posição do array.
Agora existe um limite máximo de frames que a animação deve ter? Onde estou errando no meu código? Agradeço a ajuda de todos.

pra começar não seja impaciente, espere alguem responder seu tópico, se ninguém respondeu é pq ñ sabem ou ñ entenderam sua dúvida, e de nada vai adiantar vc encher o tópico com postagens de reticências

realmente falta umpoco de informação sobre seu problema, vc poderia formular melhor sua dúvida, e por enquanto vou deixa uma dica pra vc, da uma olhada nesse livro: J2ME & Gaming by Jason Lam, ñ vai resolver sua dúvida de cara, mas vai t ensinar como montar a estrutura básica de um jogo utilizando j2me

flw, t+

Acho q pelo q eu disse, mesmo que não dê para entender a minha dúvida, com certeza qlqr um q ler percebe q eu já fiz a estrutura básica, e segundo, as reticências peço desculpas, pois eu ia criar outro post dizendo q tinha resolvido o meu problema, mas quando fui fazer outro teste vi q não tinha funcionado e que ainda estou mexendo nessa parte. No mais obrigado pela dica do livro, porém eu já conhecia ele e inclusive as noções básicas que possuo foram tiradas de lá:!:

Oi, bom dia, alder.

Eu to começando a montar um joguinho tb. Sou novo, muito novo nisso e to apenas fazedno uns testes, como por exemplo, de colisoes. Pelo que eu vi, J2me parece ter algo ja implementado, sp que eu queria ver alguma coisa por mim mesmo primeiro.

Olha, você ta usando que IDE? Eclipse ou NetBeans? O NetBeans tem umas ferramenteas legais (nao sei se vao te ajudar na tua duvida), mas que podem ser uteis pra voce nesse problema. Aí você vê o codigo que ele te dá e tira algum exemplo de lá. Você teria esse livro (ou sabe onde consigo) em pdf?

Queria ter alguma nocoes preliminares tb… Espero ter ajudado em alguma coisa! Valeu!

ei, pessoal! Foi mal, nao tinha visto a data… foi mal mesmo…

Cara a chamada ao metodo sprite.next(); não deve ficar ai, mas sim no loop principal de seu jogo. Recomendou que dentro deste if só sete o array referente aos sprites que farão seu boneco. Também retire o metodo setframe(4). Por exemplo, criei os array com as sequências dos frames de forma separada.

int  caminhadaEsquerdaArray[] = {1,2,3,4};
int  caminhadaDireitaArray[] = {6,7,8,9};
int pularArray[]={8,9,10,11};
....
Depois coloque a mudança dentro do metodo referente ao tratamento de eventos.

 private  int input()  
 {  
 int keyStates = getKeyStates();  
 if((keyStates & LEFT_PRESSED) != 0)  
    sprite.setFrameSequence( caminhadaEsquerdaArray );
     
 } 

fabioEM, me tira uma duvida, cara…

esse metodo setFrameSequence… Ele faz o que? Tipo… ele desenha a sequencia toda, de uma vez? O que eu fiz no meu jogo foi que tem uma thread que faz a tela pintar e cada vez que o jogador mexe com o boneco, ele faz o boneco andar (setando a posicao x,y) e ai chamo o metodo meuSprite.nextFrame(), pra pintar o boneco em uma outro frame, dando a sensacao que ele se moveu.

a minha duvida é: esse metodo que vc apresentou ai, o que ele faz? pinta a sequencia inteira de frames? se sim, e isso estiver numa movimentacao, por exemplo, se houver colisao, como fica?

cara, leia a documentação que vc vai saber oq a função faz… e ela tb tem um nome muito explicativo: ajusta a sequênia de frames
não entenda mal, é q realmente está muito bem explicado e com exemplos ainda, leia: javax.microedition.lcdui.game.Sprite

só ñ confunda as coisas, quem desenha é a função paint, setFrameSequence define em qual ordem os frames aparecerão, mas aparecerá um por vez, vc muda de um pra outro com a função nextFrame

se depois de ler vc ainda tiver duvidas poste ae
flw, t+

Olá gpmdf2 ,
Este metodo irá definir a sequência de frames que irão aparecer quando o metodo Sprite.nexFrame() for chamado, como nosso amigo respondeu acima. Poste o código de como você esta fazendo a movimentação, use o setFrameSequence em locais fora do loop principal de prefência no exemplo que dei acima!
fwl!

Cara… so perguntei pra saber se quando usava o metodo e mandava pintar na tela, o que acontecia.

Só era necessario falar brevemente, numa frase, o que ele faz. Só isso.

?,não entendi era para min?

pois é, alguém além de te ajudar de uma forma ampla tb resumiu as coisas como vc queria: