2011-10-22 56 views
0

所以我有這個數組列表使用csv文件填充。一旦它被填充,它就被用來繪製對象到框架。這裏是我的onDrawFrame方法(我知道它的凌亂我將在後面清理)使用ArrayList的內容來繪製一個框架

@Override 
public void onDrawFrame(GL10 gl) { 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | 
      GL10.GL_DEPTH_BUFFER_BIT); 
    gl.glLoadIdentity(); 
    gl.glScalef(screenWidth/10, screenHeight/7, 0); 

    while (currentLoadSpace < totalMapSize){ 

     loadObject = levelDat.get(currentLoadSpace); 

     Log.d(TAG,"currentLoadSpace " + String.valueOf(currentLoadSpace)); 
     Log.d(TAG,"totalMapSize " + String.valueOf(totalMapSize)); 
     Log.d(TAG,"loadObject " + String.valueOf(loadObject)); 
     Log.d(TAG,"x " + String.valueOf(x)); 
     Log.d(TAG,"y " + String.valueOf(y)); 

     gl.glPushMatrix(); 
     gl.glTranslatef(x, y, 0); 

     if (String.valueOf(loadObject) == "000"){ 
      Log.d(TAG, "Empty Space"); 
     } 

     if (String.valueOf(loadObject) == "001"){ 
      square.draw(gl); 
      Log.d(TAG, "draw a square"); 
     } 

     gl.glPopMatrix(); 
     currentLoadSpace++; 
     updateXY(); 
    } 

    currentLoadSpace = 0; 
} 

基本上這是什麼代碼不被檢查,看看我們正在嘗試讀取值的指數是否小於總規模的ArrayList。然後它讀取該值,並根據if語句對其進行檢查(如果值爲000,那麼它將不會繪製任何東西,但如果值爲001,那麼它將在位置x,y繪製一個方形),它會對每個值數組列表。

我的問題是if語句沒有觸發。那些在他們上面的日誌標籤返回他們應該的所有值和加載對象總是返回一個000或001,但我永遠不會從返回的if語句中獲取日誌標記,並且我的屏幕保持空白。

以下是此代碼的一個循環的日誌。

10-22 11:54:37.821: DEBUG/input(14680): currentLoadSpace 0 
10-22 11:54:37.821: DEBUG/input(14680): totalMapSize 55 
10-22 11:54:37.821: DEBUG/input(14680): loadObject 001 
10-22 11:54:37.821: DEBUG/input(14680): x 0.0 
10-22 11:54:37.821: DEBUG/input(14680): y 1.0 

通知沒有方格繪製的日誌被返回,所以如果我的if語句不能識別loadObject值?

回答

1

傑克,字符串不應該使用==運算符進行比較。 這是你應該如何使用它:

String.valueOf(loadObject).equalsIgnoreCase("001") 
+0

URG ......捂臉-_- – Jack

+0

他,他甚至:)最好的開發者有時會做出這樣愚蠢的錯誤 – ydntn