0

単純な 2D レーシングカーの開発で Surfaceview を使用していますが、キャンバス全体にホルダーを使用すると再描画になることがわかったので、レーンではなく物理的な位置が変更された車だけを再描画したいのですが、単一のコンポーネントのみを再描画するにはどうすればよいですか?

4

2 に答える 2

0

車以外も描き直さないと見栄えが悪いです。少なくとも、最後のフレームで車があった場所も描画する必要がありますそうしないと、両方の位置に表示されます。

開発者ガイドから:

注: SurfaceHolder から Canvas を取得するパスごとに、Canvas の以前の状態が保持されます。グラフィックを適切にアニメーション化するには、サーフェス全体を再ペイントする必要があります。たとえば、drawColor() で色を塗りつぶすか、drawBitmap() で背景画像を設定することで、Canvas の以前の状態をクリアできます。そうしないと、以前に実行した描画の痕跡が表示されます。

于 2013-10-16T17:24:08.810 に答える
0

onDraw 内で bool を使用できます。onDraw 内には、次のようなチェックがあります。

if(carMoved == false)
{
    // draw everything
}
else
{
    // draw your car
    carMoved = false; // this resets your onDraw so your whole canvas is re-drawn next time you invalidate()
}

いろいろな方法があると思いますが、これが一番簡単だと思います。

于 2012-07-31T10:55:31.963 に答える