在私有方法Java Libgdx中调用变量

时间:2014-07-15 17:56:39

标签: java variables libgdx

我试图将私有方法中的变量调用到同一个类中的另一个方法,但是在chicken.x我得到错误:

chicken cannot be resolved to a variable

如何从私有方法中调用精灵矩形?

代码:

public class OptionScreen implements Screen{
    ...
    Array<Rectangle> chickens;
    ...

    public OptionsScreen(){
        ...
        chickens = new Array<Rectangle>();
        ...
    }

    private void spawnChicken(){
        Rectangle chicken = new Rectangle();
        ...
        chickens.add(chicken);
        ...
    }

    public void render(float delta){
        ...
        diffYchick = (float) (farmerY - chicken.y); // Error here
        ...
    }
}

2 个答案:

答案 0 :(得分:1)

聊天后要回答聊天中讨论的基本问题:

有一个ArrayList<Rectangle> chickens作为OptionsScreen类的实例变量。 OP没有从Rectangle方法的ArrayList中获取render。 OP使用来自不同方法的变量名chickenspawnChicken只有方法范围。我向OP展示了如何在ArrayList方法中循环render,一次访问一个Rectangle,然后执行必要的操作。


来自聊天和编辑问题之前 sprite的范围仅在方法method中。这意味着您只能在sprite内部使用method变量。你可以使sprite成为一个实例变量,然后你可以在同一个类的另一个方法中访问它。

public class OptionScreen{
    private Rectangle sprite; // Make instance variable

    public OptionScreen(){ // Constructor - called when initializing
        sprite = new Rectangle(); // Initialize (so it's not null)
        ... // Set other info on sprite, such as x
    }

    public void render(float delta){
        ...
        sprite.x;
        ...
    }

    public static void main(String[] args){ // Example of useage
        OptionScreen optionScreen = new OptionScreen(); // Constructor called
        optionScreen.render(1.1);
    }
}

在构造函数中初始化sprite可确保在尝试使用null时不会render。 (除非您将其设置为null


注意:不要将方法命名为method,这可能是一个好主意,因为它会让人感到困惑。

答案 1 :(得分:0)

如果您在一个方法中本地定义sprite,则无法在其他方法中访问它。

虽然不确定chicken(你发布的代码中没有这样的变量)。

如果必须通过其他方法访问sprite,请将其设为实例变量。

public class ClassName 
{
  private Rectangle _sprite = null;

  ...

  private void method(){
     _sprite = new Rectangle();
  }

  ...

  public void render(float delta) {
    if (_sprite != null) {
      _sprite.x ...
    }
  }

}