Какой лучший формат для игры для Android для оптимальной производительности? - PullRequest
2 голосов
/ 22 марта 2012

Я пишу небольшую игру для Android с использованием класса SurfaceView. План класа следующий:

   class GameView extends SurfaceView implements Runnable {
    Thread drawThread;
    boolean drawThreadIsRunning;
    Context context;
    SurfaceHolder surfaceHolder;
    Canvas canvas;

    public GameView(Context context)
  {
   super(context)
   this.context = context;
   surfaceHolder = getHolder();
   //...
  }

    public void resume() {
        // starts drawing Thread
    }

    public void pause() {
        // stops drawing Thread
    }

    public void run() {
        while (drawThreadIsRunning) {
            if (!surfaceHolder.getSurface().isValid())
                continue;

            canvas = surfaceHolder.lockCanvas();
            update(canvas);
            surfaceHolder.unlockCanvasAndPost(canvas);
        }
    }

    private void update(canvas)
   {
     updateCoordinates(canvas);
     updateDrawings(canvas); 
     e.t.c.
   }
}

Что я хочу знать, так это то, будет ли хорошей идеей использовать метод update () так, как я. Между блокировкой и разблокировкой холста, метод update перемещает игровые элементы, рисует их, обновляет счет и так далее. Повлияет ли это на производительность? Есть ли лучший способ структурировать это?

1 Ответ

1 голос
/ 22 марта 2012

Это выглядит хорошо для меня.Единственное, что вы можете сделать, это переместить вызовы в updateCoordinates ();updateDrawings ();и т. д. в run (), чтобы сохранить накладные расходы на вызов этого дополнительного метода, но это не должно иметь заметного значения.

...