【问题标题】:Loading a large number of images from a spritesheet从 spritesheet 加载大量图像
【发布时间】:2011-07-14 17:18:09
【问题描述】:

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

程序结构:

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

Game.java(游戏活动,由 Menu 启动)
GameThread.java(处理游戏循环,在 GameView 中调用渲染进程)
GameView.java(处理所有在屏幕上的绘制)

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

问题:

游戏有 15 种不同类型的卡片,每种卡片需要大约 14 帧动画(翻转、破坏等)。我目前正在从 PNG spritesheet 中读取这些内容,然后使用以下代码将它们切成位图数组 (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 秒来处理(导致应用程序无响应)。

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

提前感谢您的帮助。

【问题讨论】:

    标签: android image bitmap loading sprite


    【解决方案1】:

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

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

    最后,我从您的逻辑中看到,您的内存中的位图可能比所需的要多。再一次,我无法确定没有更多的逻辑。

    【讨论】:

    • 感谢您的回复。主要问题实际上只是在菜单和游戏活动之间加载图像所花费的时间。我正在考虑预加载应用程序首次启动时所需的所有图像,并显示加载动画。
    猜你喜欢
    • 2017-04-24
    • 2015-08-08
    • 2011-06-15
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多