我一直在使用Surfaceview对于简单的2d赛车开发,我逐渐知道在画布整个表面上使用支架重绘,我想只重绘车身,因为物理位置改变而不是车道,如何只重绘单个组件?
答案 0 :(得分: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()
}
你可以做很多不同的方法,但我觉得这是最简单的方法。
答案 1 :(得分:0)
如果你不重绘不仅仅是汽车,它看起来不会正确。在至少,您还必须绘制汽车在最后一帧中的位置。否则它将显示在两个位置。
注意:在每次传递中,您从SurfaceHolder中检索Canvas,将保留Canvas的先前状态。为了正确地为图形设置动画,必须重新绘制整个表面。例如,您可以通过使用drawColor()填充颜色或使用drawBitmap()设置背景图像来清除Canvas的先前状态。否则,您将看到先前执行的绘图的痕迹。