当我尝试在Samsung设备中加载大图像(1440 * 400)时。它显示java错误。但在诺基亚运行正常。 bg1.png图像大小仅为3kb
示例代码
Image bg;
try {
bg=Image.createImage(("/Bg1.png"));
}
catch (IOException ex) {
ex.printStackTrace();
}
在运行方法
中public void run(){
Graphics g=getGraphics();
while(true)
{
g.drawImage(bg, 0, getHeight()-bg.getHeight(),0);
flushGraphics();
}
}
它在三星显示游戏错误。如何解决这个问题
我也尝试使用这个例子
Image source;
source = Image.createImage(600,400);
g=getGraphics();
bg=Image.createImage("/res/bg1.png");
如果我使 Image.createImage(700,400)或 Image.createImage(600,500)它在模拟器中显示内存不足错误。如果该值小于或等于 1000 则表示其工作正常。我不明白这个问题是什么?
答案 0 :(得分:1)
您描述的问题的主要原因是移动设备的资源有限。
如果您要定位各种设备,包括低端设备,您只需要学习如何使用它。
例如,每个MIDP 2(JSR 118)规范的最低内存要求如下所述(source):
现在让我们从这个角度看看你的图像。请记住,在MIDP中,ARGB像素占用4个字节。
Image.createImage(600,400)
上面给我们600x400x4=960000
个字节, 960千字节,远远超出了内存要求。 MIDP 2兼容设备为此投掷OOME是完全合法的。
关于占用3千字节的PNG图片文件,请注意PNG是压缩格式。处理能力不足的设备可能需要解压缩png图像才能使用它,这可能会使其大小超出内存限制。
答案 1 :(得分:0)
你试试这个:
bg=Image.createImage(("/Bg1.png")).scaled(getWidth(),getHight());
这不起作用,您最好根据设备屏幕的高度和宽度更改图像大小。