从spritesheet加载大量图像

时间:2011-03-14 02:02:35

标签: android image bitmap loading sprite

我正在尝试为Android制作简单的Pairs游戏。

计划结构:

Menu.java(最初加载的菜单活动)

Game.java(游戏活动,由菜单启动)
GameThread.java(处理游戏循环,在GameView中调用渲染过程)
GameView.java(处理所有绘图到屏幕)

Graphics.java(存储已加载的图像)

问题:

该游戏具有15种不同类型的卡片,每张卡片需要约14帧用于动画(翻转,破坏等)。我正在使用PNG spritesheet读取这些内容,然后使用以下代码将它们分成Bitmap数组(Bitmap [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秒才能处理(导致应用程序无响应)。

我有更好的方法吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

然而,如果问题是记忆问题,你必须找出一种不同的方式来处理所有图像。这可能一次只加载一个动画,调整位图大小或修复内存问题。没有看到错误和/或更多代码就无法判断。

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