2012-03-22 91 views
2

我在写一个使用SurfaceView类的小型Android游戏。类的轮廓如下为了获得最佳性能,Android游戏的最佳格式是什么?

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()方法是否是个好主意。在画布的锁定和解锁之间,更新方法移动游戏元素,绘制它们,更新分数等等。这会对性能产生负面影响吗?有没有更好的方法来构造这个?

回答

1

这对我来说很好。你唯一可以做的就是将调用移动到updateCoordinates(); updateDrawings();等等放到run()中以节省额外方法调用的开销,但它不应该有明显的区别。

+0

我没有注意到。这确实更有意义。谢谢 :) – 2012-03-22 15:42:45

相关问题