我正在尝试为我的游戏编写鼠标侦听器。基本思想是,我使用鼠标侦听器(不断更新)跟踪光标的x和y坐标,并相应地更改播放器的位置。我决定在MouseMotionListener中使用mouseMoved方法来完成此操作。我应该在屏幕上按下一次以启动对播放器的鼠标跟踪,然后一次停止。但是,看来我的变量不会在mouseMoved内部更新。如何更新方法中的变量?
private Handler handler;
public static int vel=5;
boolean pressed = false;
int run=0;
int x;
int y;
public mouseListener(Handler handler){
this.handler = handler;
}
public void mouseClicked(MouseEvent event) {
run++;
}
public void mouseMoved(MouseEvent event) {
this.x = event.getX() - 16;
this.y = event.getY() - 16;
System.out.println("Click"+run);
int trun=run;
if(trun%2==1) {
System.out.println(x+" "+y);
updateField(x,y);
}
}
public void updateField(int tempx, int tempy) {
int x=tempx;
int y=tempy;
for(int i=0; i<handler.object.size();i++){
GameObject tempObject = handler.object.get(i);
if(tempObject.getID()== ID.Player){
if(x>tempObject.getX()) {
tempObject.setVelX(vel);
}
if(x<tempObject.getX()) {
tempObject.setVelX(-1*vel);
}
if(x==tempObject.getX()) {
tempObject.setVelX(0);
}
if(y>tempObject.getY()) {
tempObject.setVelY(vel);
}
if(y<tempObject.getY()) {
tempObject.setVelY(-1*vel);
}
if(y==tempObject.getY()) {
tempObject.setVelY(0);
}
if(pressed==false) {
tempObject.setVelY(0);
tempObject.setVelX(0);
}
}
}
}
到最后结果,我应该能够在屏幕上单击一次,并且播放器应开始跟随我的鼠标。然后,我应该能够再次单击以将其关闭。相反,x和y值会更新,但播放器不会移动,并且mouseMoved()中的on / off变量也不会更新。