可能是一个非常基本的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
}
}
还在渲染我的敌人?对不起文字墙,任何答案都会有所帮助!
答案 0 :(得分:2)
moveFemale
方法是静态的,因此需要知道移动哪个女性。要么传递对palyer的引用,要么找到一个可以使移动方法成为播放器的非静态成员方法。
答案 1 :(得分:0)
我认为,您应该从方法static
moveFemale
public void moveFemale(){
if(posX <= Player.posX){
//do AI code
}
}