我有一個類,它看起來是這樣的:LibGDX - 具有靜態最終的Singleton類會導致TextureRegion失敗?
public class MyResources
{
public static final Size textureSize = new Size(72, 96);
public Texture texture;
public TextureRegion textureRegion;
private static BGRResources instance = null;
protected BGRResources()
{
// Protected to prevent direct instantiation.
texture = new Texture(Gdx.files.internal("data/mytex.png"));
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
textureRegion = new TextureRegion(texture, 0, 0, 72, 96);
//textureRegion = new TextureRegion(texture, 0, 0, textureSize.width, textureSize.height);
}
public static MyResources getInstance()
{
if (instance == null)
{
instance = new MyResources();
}
return instance;
}
}
大小是一個簡單的類只有公共的寬度和高度浮動。
我想將textureRegion設置的行替換爲它下面的行,將其註釋掉。當我這樣做時,該區域不再有效 - 在圖像中繪製時,我什麼也得不到。上面這行,對我的C編程(即預處理器)大腦應該是完全相同的,工作正常。
爲什麼?我試圖在一個更簡單的非libGDX類中重複這個問題,但是不能。我想也許靜態的最終Size類在它被用來創建textureRegion之前實際上並沒有實例化,但是調試器和我簡化它的嘗試似乎都反駁了這一點。
如上所述,我是一個C人,其中這樣的事情的順序非常清楚。它在我這裏變得很混亂,所以我可以使用任何教育來正確地聲明#define等價物或者可能與答案一起出現的單例類。謝謝。
謝謝!這至少需要一兩個小時才能解決這個問題。我不會考慮檢查打字,因爲我沒有想到尋找其他構造函數。這是我回到Java時必須記住的事情。非常感謝,先生。 – gkimsey
@gkimsey很高興我可以幫忙!我通常使用Ctrl +點擊我的代碼中的方法名稱(至少在Eclipse中)來確定究竟調用哪一個。 – adketuri