2011-03-14 85 views
1

我正在嘗試製作Android的雙人對戰遊戲。從spritesheet加載大量圖像

程序結構:

Menu.java(菜單活動最初加載)

Game.java(遊戲活動,通過菜單啓動)
GameThread.java(句柄gameloop,調用渲染過程GameView)
GameView.java(處理所有繪製到屏幕)

Graphics.java(商店加載的圖像)

問題:

遊戲功能15種不同類型的卡,其中的每一個需要用於動畫大約14幀(翻轉,破壞等)。我目前讀取這些斷PNG spritesheet,然後切碎它們變成一個位圖陣列(位圖[15] [14]),使用以下代碼:

for (int i=0; i<15; i++) { 
    for (int j=0; j<14; j++) { 
     card[i][j] = Bitmap.createBitmap(spriteSheet, 
      j*cardWidth, i*cardHeight, cardWidth, cardHeight); 
    } 
} 

,就會出現問題,當我最初加載GameView,需要加載卡圖形,這似乎需要大約2秒的時間來處理(導致無響應的應用程序)。

有沒有更好的方法可以做到這一點?

感謝您的幫助提前。

回答

0

如果問題確實是您的應用程序沒有響應,我會建議通過線程加載圖像,同時向用戶顯示一個不確定的對話框。這通常通過ThreadHandler完成。網上有很多關於如何做這件事的例子。

如果問題是內存問題,你將不得不找出處理所有圖像的不同方法。這可能一次只加載一個動畫,調整位圖大小或修復內存問題。沒有看到錯誤和/或更多的代碼是無法分辨的。

最後,我從你的邏輯中看到,你可能在內存中有更多的位圖而不是必需的。沒有看到更多的邏輯,我再一次無法確定。

+0

感謝您的回覆。主要的問題實際上只是在菜單和遊戲活動之間加載圖像所花費的時間。我正在考慮預先加載應用程序首次啓動時需要的所有圖像,並顯示加載動畫。 – woodstock365 2011-03-15 01:10:17