1

我想知道 pygame.blit 如何管理屏幕上的图像。当我在屏幕上对多个图像进行 blit 时,我看到每个图像都堆叠在前一个图像之上。

如何清除所有这些图像?当屏幕上有很多图像堆叠在一起时(不知何故)不会有大问题吗?目前,我只是在整个屏幕上使用白色背景或自定义背景来“清除”屏幕。到目前为止,没有任何问题或任何问题,因为我正在开发的应用程序非常小。

4

2 回答 2

2

当您将图像blit 到表面时,它基本上将其绘制在表面上。blitting 的位置或 blitting 的对象不保存,不能更改。就像您将图像绘制到画布上一样。新的会超越旧的,如果一个图像与另一个图像发生冲突,就没有办法摆脱它。

解决此问题的最常见方法是使用 完全清除屏幕surface.fill(),然后每帧重绘图像。

要回答您关于当有很多图像时是否会出现问题的问题,没有。窗口只会保存为特定颜色的每个单独像素,就像您拍摄相机的普通照片一样,因此无论您使用多少物体,游戏将始终花费相同的时间。

于 2012-11-16T20:02:04.117 回答
1

有多种方法:

  • 像你一样清洁整个背景。如果计算机跟上 fps,也许最好保持这种状态。

  • 只清理你 blitted 对象的区域(参见pygame.sprite.RenderUpdates

  • 在您的情况下,如果您有许多堆叠的对象,也许最好编写自己的解决方案,尝试找到碰撞矩形之间的联合,以避免一遍又一遍地重新调整相同的背景。

于 2012-11-16T18:12:28.447 回答