Java J2ME控制左上
我正在尝试使用java microedition制作一个2d游戏,我只是想让我的控制更平滑,但问题是当我按下左键同时按下向上键时,条件不起作用,我不知道为什么Java J2ME控制左上,java,java-me,midlet,Java,Java Me,Midlet,我正在尝试使用java microedition制作一个2d游戏,我只是想让我的控制更平滑,但问题是当我按下左键同时按下向上键时,条件不起作用,我不知道为什么 public void moveJet2() throws IOException{ int gameAction = getKeyStates(); if(gameAction==LEFT_PRESSED && gameAction==UP_PRESSED){ padX-=padX
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;
}
}
getKeyStates()
返回单个int中键的状态。各个键都有各自的值。向上按=0x0002,向左按=0x0004。因此,如果在调用getKeyStates()
时按d-pad上的向上键,您将返回2个,并且if(getKeyStates()==UP_PRESSED)
将因此为真。
同样,如果在调用getKeyStates()
时按d-pad上的左键,您将返回4
但如果同时按向上键和向左键,则无法返回2和4,因为这显然是2个整数,getKeyStates()
只返回一个整数
但是,你得到的结果非常简单:2+4=6。
因此,如果同时按向上键和向左键,则询问是否(getKeyStates()==6)
将为真。或如果(getKeyStates()==上按+左按)
通常,您会要求使用位运算符,如下所示:
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;
}
}
因为使用这种方法可以同时按8个方向中的任何一个。非常感谢您,先生:)