Hallo.
Ich hab auf ein Canvas ein KeyListener gelegt.
Die keys die jeweils gedrückt oder losgelassen werden werden als flag abgespiechert:
in einen extra thread wo noch andere sachen erledigt werden, werden unter anderem die keys abgerufen.
Das PROBLEM:
Ich drück d und halte es gedrückt. Die ausgabe kommt das ich d gedrückt hab.
Ich drücke zu d noch s, die ausgabe kommt das s gedrückt wude.
Jetzt lasse ich d los. Und was kommt?
er sagt, das s released wurde und s wieder gedrückt wurde.
letzteres hängt womutlich noch damit zusammen, das ich s wirklich noch gedrückt halte.
Aber d wurde ignoriert, obwohl ich es losgelassen habe.
Das ist äußerst ungünstig, könnt ihr mir helfen?
lg Micha
Ich hab auf ein Canvas ein KeyListener gelegt.
Die keys die jeweils gedrückt oder losgelassen werden werden als flag abgespiechert:
Java:
canvas.addKeyListener( new KeyListener() {
public void keyPressed(final KeyEvent e) {
final int code = e.keyCode;
if (code > 0 && code < 255) {
if (!keys[code]) {
keys[code] = true;
System.out.println("pressed: " + (char)code);
}
}
}
public void keyReleased(final KeyEvent e) {
final int code = e.keyCode;
if (code > 0 && code < 255) {
keys[code] = false;
System.out.println("released: " + (char)code);
}
}
});
in einen extra thread wo noch andere sachen erledigt werden, werden unter anderem die keys abgerufen.
Das PROBLEM:
Ich drück d und halte es gedrückt. Die ausgabe kommt das ich d gedrückt hab.
Ich drücke zu d noch s, die ausgabe kommt das s gedrückt wude.
Jetzt lasse ich d los. Und was kommt?
er sagt, das s released wurde und s wieder gedrückt wurde.
letzteres hängt womutlich noch damit zusammen, das ich s wirklich noch gedrückt halte.
Aber d wurde ignoriert, obwohl ich es losgelassen habe.
Das ist äußerst ungünstig, könnt ihr mir helfen?
lg Micha