可能是一个非常基本的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
方法是静态的,因此它需要知道要移动哪个雌性。传递参考到球员或找到可能使移动方法成为球员的非静态成员方法。