Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java J2ME控制左上_Java_Java Me_Midlet - Fatal编程技术网

Java J2ME控制左上

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

我正在尝试使用java microedition制作一个2d游戏,我只是想让我的控制更平滑,但问题是当我按下左键同时按下向上键时,条件不起作用,我不知道为什么

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个方向中的任何一个。

非常感谢您,先生:)