2 Tastatureingaben gleichzeitig verarbeiten

Du aendert per Tastendruck die position, deines rechteckes. Was hast du davon wenn du es nicht siehst?
Wenn du durch ueberlegen net drauf kommst, schau dir den Link nochma an, den ich dir geschickt hatte, wo es draum ging wie man Tastendruecke abfaengt. Da war auch so nen feines applet dargestellt mit nem Smily den man bewegen konnte, zwar immer nur mit einer Taste gleichzeitig, aber das aender ja nix daran,das es das selbe Problem ist.
 
Zuletzt bearbeitet:
Also muss ich es dann unter:

Java:
protected void processKeys() {
        if (keyDownPressed) {
            x2=x2+10;
//oder hier: repaint();
        }

        if (keyUpPressed) {
            y2=y2-10;
//oder hier: repaint();
        }

        if (keysPressed) {
            x1=x1+10;
//oder hier: repaint();
        }

        if (keywPressed) {
            y1=y1-10;
//oder hier: repaint();
        }
        repaint();
    }
setzten oder hinter jedes der Befehle?
 
Ueberleg doch mal und teste es. Dann findest du es schon raus. Das ist kein Problem was man nicht durch testen herausfinden koennte.
 
Hab ich bereits schon, funktioniert aber trotzdem nicht ;)

Ich hab auch schon überall wo's i-wie nur geht ein repaint(); reingemacht, geht aber trotzdem nicht...
 
Zuletzt bearbeitet:
Hast du dir mal in der paint methode die x udn y Werte ausgeben lassen? So kannst du schnell sehen ob er ueberhaupt deine Werte veraendert
Dennoch soll er nur neuzeichnen, wenn sich auch etwas veraendert. Also nur einmal ein repaint aufrufen.
 
Wenn ich mir ausgeben lasse bleibt der Anfangswert. Also da simmt i-was mit meiner Ergänzung nicht, also meinem letzten JAVA post mit dem KeyPressed, keyReleased & processKeys
 
Gut, das hast du rausgefunden. Dann mach ne Ausgabe in der Methode wo du wo du den fehler vermutest, und schau ob das Programm dort rein kommt und das richtige macht.
 
Also das mit dem keyPressed & mit dem keyReleased funktioniert! Aber die processKeys Methode nicht! Die wird einmal am Start als aller erstes aufgerufen und dann nie wieder.

Wo gehört denn jetz das repaint(); rein
 
Java:
private boolean running = true;
    public void run (){

          this.resize(200,500);

      while(running) {

          processKeys();

     }
    }

Wobei du vielleicht noch ein Sleep mit einbauen solltest (je nachdem wie dein Rechner ausgelastet wird).
 
Hast dud ir den Link angeschaut, wohl net.

Aber das die Methode nur einmal aufgerufen wird ist richtig. Schau auf Seite 1 von diesem Thread nochma genau was DosCoder in seine run methoden geschrieben hat.
 

Neue Beiträge

Zurück