Как изменить переменные, хранящиеся в методе mouseMoved в Java-классе MouseMotionListener - PullRequest
0 голосов
/ 02 мая 2019

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

...