Problemas com keyPressed

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.

Aqui no fórum mesmo achei isso aqui:

http://www.guj.com.br/posts/list/97464.java

Se eu entendi direito, esse erro é normal, mas como contorná-lo??

Estou desesperado, alguém por favor, me ajude!!

Obrigado.

Vish, ninguém??

Custa nada dar uma forcinha gente pra quem está começando. Por favor, já me matei de pesquisar isso mas não consigo resolver o problema.