2014-07-15 34 views
-1

我想从一个私有方法的变量调用到同一类的另一种方法,但chicken.x我得到的错误:调用变量的Java Libgdx

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 
     ... 
    } 
} 
+0

“方法”是什么类,“渲染”类是什么类? –

+0

@Andrew_CS都在相同的OptionScreen类中,chicken是精灵的实际名称 – user3165683

+0

仍然不确定你对'chicken'的意思。我已经更新了我的答案。你想在'OptionScreen'类的'main'方法中调用'render'吗? –

回答

1

聊天后要回答这个问题是在聊天讨论基本问题:

有一个ArrayList<Rectangle> chickens作为OptionsScreen类的一个实例变量。 OP在render方法中没有得到RectangleArrayList。 OP正在使用来自不同方法的变量名称chicken,其中spawnChicken仅具有方法范围。我向OP展示了如何在render方法中循环访问ArrayList,每次访问一个,然后执行必要的操作。


从聊天和编辑问题之前的sprite范围仅在方法method。这意味着您只能在method内使用sprite变量。你可以使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确保尝试使用render时,它不会null。 (除非你将其设置为null


注:这可能是一个好主意,因为它会混淆不命名方法method

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 ... 
    } 
    } 

} 
+0

有没有办法?你会推荐我做什么? – user3165683

+0

@ user3165683如果您需要此实例超出您定义方法的范围,请将其作为实例变量。 – Eran

+0

然后我得到线程“LWJGL应用程序”java.lang.NullPointerException sprite.x等错误异常? – user3165683