Olá.
Comecei a estudar j2me recentemente, e estou tentando fazer um jogo simples, onde a cada clique no FIRE aparece uma imagem diferente, e em determinado momento deve-se clicar LEFT para escolher um caminho e RIGTH para ir por outro. Bem simples, e fiz até um gif animado para exemplificar ainda mais.

Estou usando GameCanvas e o melhor resultado que conssegui foi esse usando keyPressed:
[code]public void keyPressed(int kc) {
kc = getKeyStates();
if (state == SCREEN1) {
g.drawImage(image1, 0, 0, Graphics.LEFT | Graphics.TOP);
flushGraphics();
}
else if (state == SCREEN2) {
g.drawImage(image2, 0, 0, Graphics.LEFT | Graphics.TOP);
flushGraphics();
}
else if (state == SCREEN3) {
g.drawImage(image3, 0, 0, Graphics.LEFT | Graphics.TOP);
flushGraphics();
comec();
}
else if (state == SCREEN4) {
g.drawImage(image4, 0, 0, Graphics.LEFT | Graphics.TOP);
flushGraphics();
}
else if (state == SCREEN5) {
g.drawImage(image5, 0, 0, Graphics.LEFT | Graphics.TOP);
flushGraphics();
midiPlayer = null;
}
else if (state == SCREEN5A) {
g.drawImage(image5A, 0, 0, Graphics.LEFT | Graphics.TOP);
flushGraphics();
}
else if (state == SCREEN5B) {
g.drawImage(image5B, 0, 0, Graphics.LEFT | Graphics.TOP);
flushGraphics();
}
switch (state) {
case 0:
if ((kc & FIRE_PRESSED)!=0) {
state = SCREEN2;
}
break;
case 2:
if ((kc & FIRE_PRESSED)!=0) {
state = SCREEN3;
}
break;
case 3:
if ((kc & FIRE_PRESSED)!=0) {
state = SCREEN4;
}
break;
case 4:
if ((kc & FIRE_PRESSED)!=0) {
state = SCREEN5;
}
break;
case 5:
if ((kc & LEFT_PRESSED)!=0) {
state = SCREEN5A;
}
if ((kc & RIGHT_PRESSED)!=0) {
state=SCREEN5B;
}
break;
} // end keyPressed()
}[/code]
O problema é que ele funciona normalmente até que o usuário clique em outra tecla, aí para o jogo reconhecer o FIRE o usuário deve clicá-la duas vezes. O mesmo ocorre quando chega a bifurcação, para state aparecer a SCREEN5A o usuário deve clicar LEFT duas vezes, o mesmo para SCREEN5B e RIGHT.
Como eu faço para esse código funcionar igual ao exemplo em gif?
Desde já, agradeço.