Avatar billede forgalt Nybegynder
12. april 2003 - 16:32 Der er 2 kommentarer og
1 løsning

KeyEvent

Kan jeg ikke få java til at opfange 2 samtidige keyevents. Jeg er ved at lave et spil hvor man både skal kunne dreje og accelrere....dvs. både pil op + venstre eller højre SAMTIDIG.
Avatar billede =maddog= Nybegynder
12. april 2003 - 16:35 #1
du kan tage en keymask. det betyder at når to taster er trykket samtidigt genereres et seperat keyevent, forskelligt fra det keyevent der opstår når tasterne trykkes enkeltvist.
Avatar billede repsak Nybegynder
12. april 2003 - 17:04 #2
prøv om du kan bruge følgende kode:
public abstract class Move extends KeyAdapter{
    private final int LEFT = 0;
    private final int RIGHT = 1;
    private final int UP = 2;
    private final int DOWN = 3;
    private final int SPACE = 4;

    private boolean keysdown[];

    public Move(){
        keysdown = new boolean[]{false, false, false, false, false};
    }

    public void keyPressed(KeyEvent evt){
        int key = evt.getKeyCode();
        switch(key)
        {
            case 37: keysdown[LEFT] = true;
                    break;
            case 39: keysdown[RIGHT] = true;
                    break;
            case 38: keysdown[UP] = true;
                    break;
            case 40: keysdown[DOWN] = true;
                    break;
            case 32: keysdown[SPACE] = true;
                    break;
        }

        if((keysdown[LEFT] && keysdown[RIGHT]) || (keysdown[UP] && keysdown[DOWN]))
            return;

        if(keysdown[LEFT])
            left();
        if(keysdown[RIGHT])
            right();
        if(keysdown[UP])
            up();
        if(keysdown[DOWN])
            down();
        if(keysdown[SPACE])
            space();
    }

    public void keyReleased(KeyEvent evt){
        int key = evt.getKeyCode();
        switch(key)
        {
            case 37: keysdown[LEFT] = false;
                    break;
            case 39: keysdown[RIGHT] = false;
                    break;
            case 38: keysdown[UP] = false;
                    break;
            case 40: keysdown[DOWN] = false;
                    break;
            case 32: keysdown[SPACE] = false;
                    break;
        }
    }

    protected void left(){
    }

    protected void right(){
    }

    protected void up(){
    }

    protected void down(){
    }

    protected void space(){
    }
}
Avatar billede forgalt Nybegynder
12. april 2003 - 17:28 #3
maddog => kan du uddybe lidt. Er det KEY_EVENT_MASK du mener?
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