Я пытаюсь написать мышку для моей игры. Основная идея заключается в том, что я использую слушатель мыши, чтобы (постоянно обновлять) отслеживать координаты x и y моего курсора и соответственно изменять положение игрока. Я решил использовать метод mouseMoved внутри MouseMotionListener для достижения этой цели. Я должен нажать на экран один раз, чтобы начать отслеживание мыши, и один раз, чтобы остановить. Однако, похоже, мои переменные не будут обновляться внутри 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 ().