可能是一个非常基本的Java问题,但是我在实体类中有两个变量:

public class Entity {

int posX;
int posY;

public Entity(int posX, int posY){
    this.posX = posX;
    this.posY = posY;
}

public void update(){

}

public void draw(Graphics2D g2d){

}


}

我的玩家和敌人的类对其进行了扩展,然后从这两个变量中进行渲染。像这样:

public void draw(Graphics2D g2d) {
    g2d.drawImage(getPlayerImg(), posX, posY, null);
    if (showBounds == true) {
        g2d.draw(getBounds());
    }
}


我需要像这样访问这些变量(这是我的敌人课):

public static void moveFemale(){
    if(posX <= Player.posX){
        //do AI code
    }
}


posX和Player.posX引发错误,提示我需要将Entity.java中posX的修饰符更改为静态。但是,当我将其更改为静态时,敌人类的渲染器将停止工作,并且敌人不再显示在屏幕上。我该如何创建一个允许我执行此操作的变量:

public static void moveFemale(){
    if(posX <= Player.posX){
        //do AI code
    }
}


仍然渲染我的敌人?抱歉,没有文字,任何答案都将对您有所帮助!

最佳答案

moveFemale方法是静态的,因此它需要知道要移动哪个雌性。传递参考到球员或找到可能使移动方法成为球员的非静态成员方法。

10-07 18:55