2016-10-02 4 views
2

Ich versuche, ein 2D-Spiel mit Java Microedition machen und ich möchte nur meine Kontrolle glatter, aber das Problem ist, wenn ich die LINKE Taste drücken, während die AUFWÄRTS-Taste die Bedingung nicht funktioniert i weiß nicht, warumJ2ME Kontrollen LINKS und OBEN

public void moveJet2() throws IOException{ 
    int gameAction = getKeyStates(); 

    if(gameAction==LEFT_PRESSED && gameAction==UP_PRESSED){ 
     padX-=padXVel; 
     padY-=padYVel; 
    } 
    else if(gameAction==RIGHT_PRESSED){ 
     padX += padXVel; 
    } 
    else if(gameAction==UP_PRESSED){ 
     padY-=padYVel; 
    } 
    else if(gameAction==DOWN_PRESSED){ 
     padY+=padYVel; 
    }    
} 

Antwort

1

getKeyStates() den Zustand der Schlüssel in einem einzigen int zurückgibt. Die verschiedenen Tasten haben individuelle Werte. UP_PRESSED = 0x0002 und LEFT_PRESSED = 0x0004. Also, wenn Sie OBEN auf Ihrem D-Pad drücken, während Sie getKeyStates() aufrufen, erhalten Sie 2 zurück, und if (getKeyStates()==UP_PRESSED) wird somit wahr sein. Ebenso, wenn Sie LINKS auf Ihrem D-Pad drücken, während Sie getKeyStates() aufrufen, erhalten Sie 4 zurück.

Aber wenn Sie OBEN und LINKS gleichzeitig drücken, können Sie nicht 2 und 4 zurückbekommen - denn das ist offensichtlich 2-Zoll - und getKeyStates() gibt nur einen int zurück.

Was Sie tun, obwohl zurück, ist ziemlich einfach: 2 + 4 = 6. Also, fragen if (getKeyStates()==6) wird wahr, wenn Sie gleichzeitig auf und LINKS drücken. Oder if (getKeyStates()==UP_PRESSED+LEFT_PRESSED).

Normalerweise obwohl, Sie würden fragen Bit-Operatoren, wie folgt aus:

public void moveJet2() throws IOException{ 
int gameAction = getKeyStates(); 

if((gameAction & LEFT_PRESSED)!=0) { 
    padX -= padXVel; 
} 
if((gameAction & RIGHT_PRESSED)!=0) { 
    padX += padXVel; 
} 
if((gameAction & UP_PRESSED)!=0) { 
    padY-=padYVel; 
} 
if((gameAction & DOWN_PRESSED)!=0){ 
    padY+=padYVel; 
}    
} 

Da diesen Ansatz verwendet, wird mit einem der 8 Richtungen arbeiten Sie gleichzeitig drücken.

+0

Vielen Dank Mister :) – xFaceless

Verwandte Themen