私は、lunarlanderの例から私のゲームの基盤となっています。これは私が使用している実行ループです(lunarlanderで使用されているものと非常によく似ています)。私はほとんど何も描かなくても、私の作図に関連してかなりのパフォーマンス上の問題を抱えています。lunarlanderの例に関する簡単な質問
私は以下の方法に気付きました。キャンバスが作成され、各サイクルでnullに設定されるのはなぜですか?
mField = new Bitmap(...dimensions...);
Canvas c = new Canvas(mField);
私の質問は次のとおりです:なぜGoogleの例では、そのように(ヌルキャンバス)に行われ、どのようなもの、私はそれはの線に沿ってよりあるキャンバスについて何かを読んでいる時間のほとんど
@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);
}
}
}
}
これの利点は、それを行うより速い方法がありますか?
ああ、私があなたには分かりませんでした。 lockCanvasメソッドを使用すると、汚れた四角形を指定するとパフォーマンス上の利点がありますか?また、どこのキャンバスのサイズを指定する必要がありますか? – Smills