在我的游戏主题中,我试图获得高fps-大约60岁 但是只锁定画布已经使其最多为60 fps 这是我使用的代码 -
public void run()
{
super.run();
int FPS = 60;
final long TPF = 1000 / FPS;
long startTime;
long sleepTime;
while (m_run)
{
startTime = SystemClock.uptimeMillis();
m_canvas = m_surfaceHolder.lockCanvas();
if (m_canvas != null)
{
}
m_surfaceHolder.unlockCanvasAndPost(m_canvas);
sleepTime = TPF - (SystemClock.uptimeMillis() - startTime);
Log.d("sleep", String.valueOf((SystemClock.uptimeMillis() - startTime)));
}
但只能通过调用lockCanvas
和unlockCanvasAndPost
来获得60毫秒已经结束
答案 0 :(得分:2)
如果你想要一个非常高的帧速率,如60fps,你可能需要使用OpenGL而不是SurfaceView。您仍然可以使用SurfaceView获得合理的帧速率(例如~30fps),每帧绘制的精灵数量从低到中等,但我相信如果不使用OpenGL,很难做得更好。
注意:调用'Log.d'和'String.valueOf'可能会显着降低帧速率,这是一个令人讨厌的问题22。