我是以我的遊戲爲基礎的例子。這是我正在使用的運行循環(非常類似於在月球上使用的循環)。即使我幾乎沒有畫任何東西,我也會遇到與繪圖相關的大量性能問題。簡單的問題關於月球人的例子
我注意到了下面的方法。爲什麼畫布被創建並設置爲每個循環都爲空?
@Override
public void run()
{
while (mRun)
{
Canvas c = null;
try
{
c = mSurfaceHolder.lockCanvas();//null
synchronized (mSurfaceHolder)
{
updatePhysics();
doDraw(c);
}
} finally
{
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null)
{
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
大多數我看了一下畫布任何它是沿的線條更加的時代:
mField = new Bitmap(...dimensions...);
Canvas c = new Canvas(mField);
我的問題是:爲什麼谷歌的例子這樣做的方式(空帆布),什麼是這樣做的好處,有沒有更快的方法來做到這一點?
啊,我很新,如果你不知道。使用lockCanvas方法,指定一個髒矩形會有什麼性能優勢嗎?另外,你需要指定畫布的大小嗎? – Smills 2011-01-06 11:09:08