从spritesheet加载大量图像

从spritesheet加载大量图像

问题描述:

我正在尝试制作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秒的时间来处理(导致无响应的应用程序)。

有没有更好的方法可以做到这一点?

感谢您的帮助提前。

如果问题确实是您的应用程序没有响应,我会建议通过线程加载图像,同时向用户显示一个不确定的对话框。这通常通过ThreadHandler完成。网上有很多关于如何做这件事的例子。

如果问题是内存问题,你将不得不找出处理所有图像的不同方法。这可能一次只加载一个动画,调整位图大小或修复内存问题。没有看到错误和/或更多的代码是无法分辨的。

最后,我从你的逻辑中看到,你可能在内存中有更多的位图而不是必需的。没有看到更多的逻辑,我再一次无法确定。

+0

感谢您的回复。主要的问题实际上只是在菜单和游戏活动之间加载图像所花费的时间。我正在考虑预先加载应用程序首次启动时需要的所有图像,并显示加载动画。 – woodstock365 2011-03-15 01:10:17