Keyhandler

H

Hansi8123

Mitglied
Liebe Leser/innen,
Java:
if(e.getSource() == btn1) {
          
            new KeyListener() {
              
                @Override
                public void keyTyped(KeyEvent e) {
                    // TODO Auto-generated method stub
                  
                }
              
                @Override
                public void keyReleased(KeyEvent e) {
                   // TODO Auto-generated method stub
           
                  
                }
              
                @Override
                public void keyPressed(KeyEvent e) {
                 
                 A= e.getKeyCode();
                }
          
            };
            System.out.println(A);
        }
Ich mache Grad in meinem Spiel eine Option wo man selbst Tastenbelegen kann. Das Erste, was mir eingefallen ist, ist einen Button zu erstellen mit einem KeyListener. Die Taste, die man dann drückt, soll in die Variable "A" mit e.getKeyCode eingefügt werden. Das Problem ist, wenn ich auf den Button klicken ist der Code direkt wieder geschlossen und wartet auf keine Eingabe.
Liebe Grüße Hans.
 
Mart

Mart

Bekanntes Mitglied
Also ich nehme an du hast schon etwas Code wo man sich mit w a s d bewegen kann , kannst du den zeigen ich glaube du siehst den Wald vor lauter Bäumen nicht ;)
 
mihe7

mihe7

Top Contributor
Vor allem solltest Du den KeyListener auch irgendwo registrieren... Aktuell erstellst Du einfach ein neues Objekt und wirfst es sofort wieder weg.
 
H

Hansi8123

Mitglied
Also ich nehme an du hast schon etwas Code wo man sich mit w a s d bewegen kann , kannst du den zeigen ich glaube du siehst den Wald vor lauter Bäumen nicht ;)
code:
public class KeyHandler implements KeyListener{


    @Override
    public void keyTyped(KeyEvent e) {
        
        
    }

    @Override
    public void keyPressed(KeyEvent e) {
        
        if(e.getKeyCode() ==Var.Jump && Var.cooldown == 0 && Var.Spiel) {
            for(int i = 0; i < 100; i++) {
                Var.y -= 1;
            }
            Var.cooldown += 1;
            
        }if(e.getKeyCode() == Var.Sneak) {
            
            Var.y = 780;
    
            
        }
        
    }

    @Override
    public void keyReleased(KeyEvent e) {
        
        
        
    }

    

}
Ich mache Grad ein Endless runner wo man nur springen und sneaken kann. "Var.Sneak" ist der KeyCode 16 also Shift und "Var.jump" ist der KeyCode 32 für Space. Und ich möchte dann "Var.jump" oder "Var.sneak" überschreiben.
 
H

Hansi8123

Mitglied
Vor allem solltest Du den KeyListener auch irgendwo registrieren... Aktuell erstellst Du einfach ein neues Objekt und wirfst es sofort wieder weg.
Ich habe jetzt schon eine Lösung gefunden, und zwar:
ActionListener:
if(e.getSource() == Var.jump) {
            
        Var.BJump = true;
        Var.jf1.requestFocus();
        }
KeyHandler:
if(Var.BJump == true) {
            Var.Jump = e.getKeyCode();
            Var.BJump = false;
        }

Trotzdem danke dir mir geholfen haben :)
 
T

thecain

Top Contributor
Noch ein kleiner Tipp. Wechsel das Tutorial. Dieser Quatsch mit der Var Klasse ist schon fast ein Verbrechen. Vor allem es dann als Tutorial Online zu stellen.
 
H

Hansi8123

Mitglied
Noch ein kleiner Tipp. Wechsel das Tutorial. Dieser Quatsch mit der Var Klasse ist schon fast ein Verbrechen. Vor allem es dann als Tutorial Online zu stellen.
Mir wurde eigentlich immer gesagt, dass man das so nicht einsetzten soll, aber irgendwie greife ich immer darauf zurück, weil es so schneller geht. Ich weiß, selber es ist nicht schlau.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Mir wurde eigentlich immer gesagt, dass man das so nicht einsetzten soll, aber irgendwie greife ich immer darauf zurück, weil es so schneller geht. Ich weiß, selber es ist nicht schlau.
Du fährst mit dem Auto zum Anhalten auch immer in die nächste Mauer anstatt zu bremsen, weil es so schneller geht? ;)
 
J

Joreyk

Bekanntes Mitglied
Das ist eine der typischen YouTube-Pong-für-Einsteiger-Tutorial-Klassen. Die macht gar nix, außer statische Variablen zu halten - am besten fürs ganze Programm.

Wo bleibt eigentlich das Anti-"Pong-Tutoial"-Tutorial auf YouTube?
gut dann vergesse ich wieder dass es das gibt xD
 

Oben