0

可能是一个非常基本的 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 的修饰符更改为 static。但是当我将其更改为静态时,我的敌人类渲染器停止工作,并且敌人不再出现在屏幕上。我怎么能去创建一个允许我这样做的变量:

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

还渲染我的敌人?对不起,文字墙,任何答案都会有很大帮助!

4

2 回答 2

2

moveFemale方法是静态的,因此它需要知道要移动哪个女性。要么传入对 palyer 的引用,要么找到一个可能以使移动方法成为播放器的非静态成员方法。

于 2012-10-28T15:53:51.990 回答
0

static我认为,您应该从方法中删除修饰符moveFemale

 public void moveFemale(){
    if(posX <= Player.posX){
        //do AI code
    }
  }
于 2012-10-28T15:53:48.667 回答