Avatar billede bentblod Nybegynder
28. marts 2004 - 19:45 Der er 13 kommentarer og
1 løsning

Holde knappen nede events

Hej.
Mit problem er at jeg vil have en bil til at køre når jeg holder piltasten nede dvs. er igang med at programmere et bil spil.. Men ved ikke hvordan jeg gør når den skal holdes nede hele tiden. Lige nu skal man bare trykke en gang og så køre den. Så ville være rart hvis nogen havde et bud på hvordan man gør dette? Dvs. skal også bruge en metode der ser om knappen er nede, hvordan gør jeg dette??
Tak på forhånd :)
Avatar billede mikkelbm Nybegynder
28. marts 2004 - 19:48 #1
Der er jo følgende metoder i KeyListener:

public void keyTyped(KeyEvent e);
public void keyPressed(KeyEvent e);
public void keyReleased(KeyEvent e);

Så jeg vil mene det bare er noget med at ha' en boolean som du sætter til true, når en bestemt tast trykkes ned, og så ændre du den til false, når tasten slippes igen.
Avatar billede bentblod Nybegynder
28. marts 2004 - 19:56 #2
ahh smart nok, den havde jeg ikke lige tænkt over... men bruger samme metoder som dem der, men hvad er forskellen fra keyTyped og keyPressed ?
Avatar billede bentblod Nybegynder
28. marts 2004 - 20:01 #3
Ahh nyt problem.. når jeg bruger keyPressed kan jeg bruge event.getKeyCode() den der metode til at få keyen frem... Hvilken en skal jeg bruge ved keyReleased ?
Avatar billede mikkelbm Nybegynder
28. marts 2004 - 20:03 #4
den samme :)
Avatar billede mikkelbm Nybegynder
28. marts 2004 - 20:05 #5
Direkte taget fra API'en:

keyTyped:
Invoked when a key has been typed. This event occurs when a key press is followed by a key release

keyPressed:
Invoked when a key has been pressed
Avatar billede bentblod Nybegynder
28. marts 2004 - 20:06 #6
Den brokker sig bare hvis jeg bruger den samme.. koden i keyPressed ser sådan ud

    public void keyPressed(KeyEvent event) {
      switch (event.getKeyCode()) {
        case KeyEvent.VK_RIGHT:
          bm.getBil(0).rudderRight();
          System.out.println("right");
          break;
        case KeyEvent.VK_LEFT:
          bm.getBil(0).rudderLeft();
          System.out.println("left");
          break;
        case KeyEvent.VK_UP:
          bm.getBil(0).engineFullPower();
          System.out.println("up");
          break;
        case KeyEvent.VK_DOWN:
          bm.getBil(0).engineReverse();
          System.out.println("down");
          break;
      }
    }

Og den kan ikke bruge metoden event.getKeyCode() i keyReleased :(
Avatar billede mikkelbm Nybegynder
28. marts 2004 - 20:09 #7
Det forstår jeg ikke!

Hvilken fejl får du?
Avatar billede bentblod Nybegynder
28. marts 2004 - 20:16 #8
illigal start of type at line 147 -_-
Avatar billede mikkelbm Nybegynder
28. marts 2004 - 20:18 #9
hmmm. må jeg se hvad du skriver i keyReleased-metoden?
Avatar billede bentblod Nybegynder
28. marts 2004 - 20:46 #10
præcist det samme og så siger den fejl ved  switch (event.getKeyCode()) {
Avatar billede mikkelbm Nybegynder
28. marts 2004 - 20:49 #11
illigal start of type, betyder som regel at der er en syntax fejl.

Er du sikker på der ikke har sneget sig et eller andet tegn ind i din kode, som ikke skal være der?

public void keyPressed(KeyEvent event)
{
      switch (event.getKeyCode()) {
        case KeyEvent.VK_RIGHT:
          bm.getBil(0).rudderRight();
          System.out.println("right");
          break;
        case KeyEvent.VK_LEFT:
          bm.getBil(0).rudderLeft();
          System.out.println("left");
          break;
        case KeyEvent.VK_UP:
          bm.getBil(0).engineFullPower();
          System.out.println("up");
          break;
        case KeyEvent.VK_DOWN:
          bm.getBil(0).engineReverse();
          System.out.println("down");
          break;
      }
}

public void keyReleased(KeyEvent event) {
      switch (event.getKeyCode()) {
        case KeyEvent.VK_RIGHT:
          bm.getBil(0).rudderRight();
          System.out.println("right released");
          break;
        case KeyEvent.VK_LEFT:
          bm.getBil(0).rudderLeft();
          System.out.println("left released");
          break;
        case KeyEvent.VK_UP:
          bm.getBil(0).engineFullPower();
          System.out.println("up released");
          break;
        case KeyEvent.VK_DOWN:
          bm.getBil(0).engineReverse();
          System.out.println("down released");
          break;
      }
}


Burde virke!
Avatar billede bentblod Nybegynder
28. marts 2004 - 20:54 #12
Damn hvor er jeg dum... heh havde liiiige glemt et } -_- men tak for hjælpen da :)
Avatar billede bentblod Nybegynder
28. marts 2004 - 20:55 #13
Men bare skriv som svar så jeg kan give dig de points :)
Avatar billede mikkelbm Nybegynder
28. marts 2004 - 20:56 #14
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester