0

我一直在使用 Surfaceview 进行简单的 2d 赛车开发,因为我知道在画布上使用支架整个表面正在重绘,我只想重绘汽车,因为物理位置发生了变化而不是车道,如何只重绘单个组件?

4

2 回答 2

0

如果你不只重绘汽车,它就不会看起来正确。至少,您还必须绘制汽车在最后一帧中的位置。否则它将显示在两个位置。

来自开发者指南

注意:每次从 SurfaceHolder 检索 Canvas 时,都会保留 Canvas 的先前状态。为了正确地为您的图形设置动画,您必须重新绘制整个表面。例如,您可以通过使用 drawColor() 填充颜色或使用 drawBitmap() 设置背景图像来清除 Canvas 的先前状态。否则,您将看到之前执行的绘图的痕迹。

于 2013-10-16T17:24:08.810 回答
0

您可以在 onDraw 中使用布尔值。在您的 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 回答