2011-09-06 62 views
0

當我嘗試在三星設備中加載大圖像(1440 * 400)時。它顯示Java錯誤。但在諾基亞運行良好。該bg1.png圖像尺寸只有3KB在三星設備(J2me遊戲)中加載大圖像時出現問題

示例代碼

Image bg; 

    try { 

      bg=Image.createImage(("/Bg1.png")); 

     } 
    catch (IOException ex) { 

      ex.printStackTrace(); 

     } 

在運行方法

公共無效的run(){三星

Graphics g=getGraphics(); 

    while(true) 
    { 

     g.drawImage(bg, 0, getHeight()-bg.getHeight(),0); 
     flushGraphics(); 
    } 
} 

它的展示遊戲的錯誤。如何如果我做Image.createImage(700400)Image.createImage解決這個問題

我也有這個例子

Image source; 
    source = Image.createImage(600,400); 
      g=getGraphics(); 
      bg=Image.createImage("/res/bg1.png"); 

嘗試(600500)它顯示出在仿真器內存不足的錯誤也。如果該值小於或等於表示其工作正常。我不明白最新的問題?

+3

約翰,你得到什麼錯誤? – bharath

+0

java遊戲錯誤 – JohnRaja

+1

請提供堆棧跟蹤。 – Mikaveli

回答

1

您描述的問題的主要原因是移動設備的資源有限。

如果你打算瞄準範圍廣泛的設備,包括低端設備,你只需要學會忍受這一點。

例如,每MIDP 2最小存儲器要求(JSR 118)規範說明如下(source):非易失性存儲器,用於MIDP實現

  • 256千字節,超出了什麼所需的CLDC。
  • 8千字節的非易失性存儲器應用程序創建的持久數據
  • 的Java運行時易失性存儲器(例如Java堆)

現在讓我們來看看從你的圖像的128千字節那個角度。請記住,在MIDP中,ARGB像素佔用4個字節。

Image.createImage(600,400) 

上面給我們600x400x4=960000字節,960千字節即遠遠超出以上內存的需求。這對於符合MIDP 2標準的設備來說是完全合法的。

關於PNG圖片文件佔用3千字節,請注意PNG是壓縮的格式。處理能力不足的設備可能需要對png圖像進行解壓縮才能使用它,這可能會使其大小超出內存限制。

0

你試試這個:

bg=Image.createImage(("/Bg1.png")).scaled(getWidth(),getHight()); 

這不是工作,你最好更改圖像大小取決於設備屏幕的高度和寬度。