2014-07-15 31 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