2013-02-23 5 views
0

Я делаю простую игру, очень похожую на Понга. Главный механик в игре включает в себя прокрутку экрана, чтобы нарисовать изображение на фоне, а затем спрайты нарисованы поверх этих двух вещей.Производительность изображения на экране Android

У меня проблемы с производительностью, и я не уверен, почему. Я отключил все функции рисования, кроме тех, которые рисуют изображение переднего плана (выше фона, но ниже спрайтов). Это вызывает проблему.

Изображение на переднем плане Im using - 30kb png. Im загрузки моего изображения только один раз при запуске (формат RGB565), затем с помощью:

@Override 
public void drawImage(Image Image, int x, int y) { 
    canvas.drawBitmap(((AndroidImage)Image).bitmap, x, y, null); 

нарисовать изображение на холсте в моем методе Draw. По какой-то причине это работает ОЧЕНЬ медленно (работает на моем Nexus 7). Если я использую метод drawRect вместо этого, он работает отлично, поэтому он имеет какое-то отношение к тому, как Im рисует импортированное изображение. Is drawBitmap плохой способ сделать это? Нужно ли мне изучать этот материал OpenGL для такой простой игры?

Спасибо за любые предложения.

ответ

0

Если у кого-то есть эта проблема, моя ситуация может быть актуальной, но, вероятно, нет.

Я использовал файл wav размером 4 МБ в качестве моей песне для титульной страницы и забыл освободить память, когда игра начнется. Теперь я получаю гладкие fps!

0

Поскольку ваш сегмент кода короткий, я не уверен, как вы назвали этот метод.

Если вы собираетесь нарисовать очень отзывчивый вид, вы должны использовать SurfaceView для рисования содержимого в методе onDraw (Canvas canvas).

Поскольку вы пишете игру, как часто обновляется местоположение понга? Это обновление выполняется в AsyncTask или Runnable? Вы можете уменьшить чрезмерный вызов onDraw, вызвав invalidate(), только если положение спрайтов обновлено.

Смежные вопросы