2013-10-18 48 views
1

我想要的this.dispose();同樣的效果沒有得到StackOverflow上的錯誤。我怎樣才能輕鬆處理所有變量(我有〜100)?我想刪除當前屏幕並切換屏幕,如果我切換回來,就好像舊屏幕從未存在過。我一直在試圖爲當前屏幕的配置,並在dispose()方法迄今手工處置各種方法似乎是最好的選擇。重置變量libgdx

回答

3

在大多數情況下,手動處理Screendispose()方法是因爲對於大多數資源而言,它是最早可能的最新時間點。有時,如果你知道你會不會改變Screen你也可以之前已經做之前需要的東西了,但是這應該只是一個特例。

至於你的StackOverflow的錯誤:這是不是因爲你有很多的變數,但因爲似乎是任何一種你的資源,你要丟棄之間的循環依賴。它可以是隻有兩個資源,兩個輪流都是dispose()。舉個例子:

Class A { 
    private B b; 

    public void dispose() { 
     b.dispose(); 
    } 
} 

Class B { 
    private A a; 

    public void dispose() { 
     a.dispose(); 
    } 
} 

只要你撥打這兩個資源之一dispose(),你會因爲你的函數調用堆棧是有限的命中無限循環,並最終出現StackOverflow。

這可能也有可能不止兩個資源,可能會有另一個類C,並且您可能有一個圈如A→B→C→A。