Загрузка большого количества изображений из таблицы спрайтов - PullRequest
1 голос
/ 14 марта 2011

Я пытаюсь сделать простую игру Pairs для Android.

Структура программы:

Menu.java (изначально загруженная активность меню)

Game.java (игровая активность, запускаемая с помощью меню)
GameThread.java (обрабатывает gameloop, обрабатывает рендеринг вызовов в GameView)
GameView.java (обрабатывает все рисунки на экране)

Graphics.java (хранит загруженные изображения)

Проблема:

В игре представлено 15 различных типов карт, для каждого из которых требуется около 14 кадров для анимации (листание,уничтожение и т. д.).В настоящее время я читаю их из таблицы спрайтов PNG, а затем делаю выборку в массив растровых изображений (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 голосов
/ 14 марта 2011

Если проблема действительно в том, что ваше приложение не отвечает, я бы порекомендовал загружать изображения через поток, показывая пользователю неопределенное диалоговое окно. Обычно это делается с помощью Thread и Handler . Есть много примеров того, как сделать это онлайн.

Если, однако, проблема заключается в памяти, вам придется найти другой способ обработки всех изображений. Это может быть загрузка только одной анимации за раз, изменение размеров растровых изображений или исправление проблемы с памятью. Невозможно сказать, не увидев ошибок и / или больше кода.

Наконец, из вашей логики я вижу, что в памяти может быть больше растровых изображений, чем требуется. Еще раз, я не могу быть уверен, не видя больше логики.

...