"We are back" « oc.at

J2ME: KEY_NUM1 status abrufen?!

Master99 31.05.2007 - 19:42 1504 8
Posts

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12696
damn, ich such jetzt schon seit ner stunde nach ner lösung, aber die doku is mies (oder ich finds einfach nicht) und im internet beziehen sich alle code-examples auf LEFT_PRESSED usw.

also, wie kann ich in einem GameCanvas abrufen ob die tasten 1-9 gedrückt worden sind?

TIA

tom

Facetious

Addicted
Avatar
Registered: Oct 2003
Location: Wien
Posts: 406
Du musst dir die Methode keyPressed (int keyCode) überschreiben.
dann kannst du ganz bequem zugreifen:
Code:
if (keyCode == KEY_NUM2) {
 // tu was
}

hth Facetious

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12696
hab ich vergessen dazugeschrieben, wenn ich die keyPressed-Methode überschreibe bringt das leider auch nix -> die methode wird einfach nicht aufgerufen wenn ich ne nummerntaste drücke (funzt nur bei 2,4,5,6,8 -> also die tasten die durch up/down/fire usw. doppelbelegt sind!)

komisch ist das... und extrem lästig :-( dieser blödsinn raubt mir jetzt schon beinahe 2h...

btw.: neuste java version + wireless toolkit, neuste eclipse-version+j2me-plugin.

Facetious

Addicted
Avatar
Registered: Oct 2003
Location: Wien
Posts: 406
hmm...
Strange.. bei mir funktionierts allerdings.
Das was du beschreibst ist die Methode getGameAction.
die liefert dir UP, DOWN, LEFT, RIGHT, FIRE.

den restlichen Zahlenblock (0-9) solltest du einfach abfangen können wie ich oben geschrieben hab

ein kleiner Auszug aus meinem funktionierenden Programm:
Code:
public void keyPressed(int keyCode){
  switch(this.getGameAction(keyCode)){
      case FIRE:
         System.out.println("FIRE was pressed");
         break;
  }
  if (keyCode == KEY_NUM2) {
      System.out.println("Pressed: 2");
  }
}

Facetious

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12696
mhm, strange triffts genau ja... folgendes verhalten herausgefunden

@ keyPressed:
die methode wird bei mir nur ausgeführt wenn ich auf 2,4,5,6 und 8 betätige... NICHT bei den restlichen nummerntasten und auch nicht bei UP,DOWN,LEFT, FIRE.

dein beispielcode funktioniert dementsprechend zwar für die 2er-taste, aber nicht für fire... und 1...

wenn ich mir jetzt die übliche variante anschau:
Code:
int keyStates = getKeyStates();
System.out.println("Keystates: " + keyStates);

hier bekomm ich zwar codes bei 1,3,7,9 und den ActionButtons (UP..) ABER NICHT wenn ich 2,4,5,6,8 drücke...

ne lösung wär also jetzt ne kombination aus keyPressed für 2,4... und keyStates für den rest... ABER des kanns doch nicht sein oder?!

entweder bei mir hats was oder j2me is einfach ein großer sinnloser blödsinn...
Bearbeitet von Master99 am 01.06.2007, 21:25

Facetious

Addicted
Avatar
Registered: Oct 2003
Location: Wien
Posts: 406
funktionierts im emulator oder am handy selbst nicht?

versuch mal vielleicht statt der methode keyPressed die Methode keyReleased zu probieren.

Facetious

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12696
simulator.... hab keine möglichkeit des auf meinem handy zu testen (ka datenkabel und handy ka bluetooth... weiß nitmoi ob des j2me kann *lol*)... werds morgen mal auf ner anderen maschine und nem handy testen.

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12696
ok update von nem anderen computer (eclipse 3.1, java 1.5.0_09, WTK2.2) -> beide varianten funktionieren, sowohl bei keyPressed als auch bei den keyStates bekomm ich alle codes geliefert hier.... lustig... also liegts wohl an der "neueren" software auf meinem computer (eclipse 3.2, java 6 01, wtk2.5)

Facetious

Addicted
Avatar
Registered: Oct 2003
Location: Wien
Posts: 406
Problem gelöst?
wenn ja, dann viel spaß noch :)

mfg Facetious
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz