2012-07-20 145 views
0

我目前正在爲Android設計一款小遊戲。我使用Canvas和drawBitmap方法繪製遊戲級別。爲此,我已經有一些移植了XNA原理(如Update - Draw Loop等)。位圖不顯示在畫布上

我還添加了一個「drawStaticParts」方法。我使用這種方法只畫一次某些部分。在Update-Draw循環開始之前調用此方法。在這個方法中,我繪製(使用Canvas)到一個位圖上。在繪製動態部分之前,該位圖稍後用於「恢復」Draw中的舊狀態(就像調用drawColor(Color.Black)一樣)。

這工作得很好。但僅限於背景,也是使用drawBitmap方法繪製的背景。只要我嘗試添加其他位圖,它們將不會顯示。我已經檢查過,如果背景可能會覆蓋其他位圖,但背景繪製調用發生在任何其他drawBitmap調用之前。我也沒有得到任何例外或類似的東西。

下面是代碼片段中的問題:

public void drawStaticParts(Canvas c) { 
    c.drawBitmap(TextureManager.getTexture(Element.getBackgroundID(), backgroundImg), null, new RectF(0, 0, Element.getResolution_width(), Element.getResolution_height()), null); 
    for(int i = 0; i < width; i++) 
    { 
     for(int j = 0; j < height; j++) 
     { 
      Element temp = spielfeld[i][j]; 
      if(temp != null) 
      { 
       if(Element.isStatic(temp)) 
       { 
        float x = i * Element.getElement_width(); 
        float y = j * Element.getElement_height(); 
        RectF place = new RectF(x, y, Element.getElement_width(), Element.getElement_height()); 
        Log.w("MS:doDraw", "Draw at " + x + ", " + y + " with w=" + Element.getElement_width() + " and h=" + Element.getElement_height()); 
        c.drawBitmap(TextureManager.getTexture(temp.getTextureID(), sceneryID), null, place, null); 
       } 
      } 
     } 
    } 
} 

我檢查了所有值的問題:一切都很好。寬度和高度均爲假定的40,座標也適合。我不知道更多。

我將永遠gratefull任何形式的幫助/建議。先謝謝你。 PS:我也嘗試了一些解決類似問題的線程中提到的解決方案,但沒有任何成效。

回答

2

你不能得出靜態部分只有一次..

你應該借鑑他們每次循環

,因爲即使它們是靜態的,每次你畫你將覆蓋當前的零件DINAMIC畫布,所以你不能看到靜態部分..

編輯:那麼這個問題應該在

TextureManager.getTexture(temp.getTextureID(), sceneryID) 

檢查參數...

+0

「在我繪製動態部分之前,該位圖稍後用於」恢復「Draw中的舊狀態(就像調用drawColor(Color.Black)一樣)。」 每個循環都繪製此位圖。但最初的drawBitmap調用只發生一次。 而且說:它與第一次drawBitmap調用(背景) – CrankMuffler 2012-07-20 15:21:20

+0

沒有我已經檢查了所有這些,他們是正確的。完全像在背景調用中一樣,並且調用不會返回null,這意味着他至少要畫出一些東西。 – CrankMuffler 2012-07-20 15:37:01

+0

我也嘗試添加硬編碼參數,但問題仍然存在 – CrankMuffler 2012-07-20 15:48:01