我想知道pygame.blit如何管理屏幕上的图像。当我在屏幕上显示多个图像时,我看到每个图像都堆叠在前一个图像的顶部。
如何清除所有这些图像?当屏幕上有很多图像堆叠在一起时,不会(某种程度上)出现大问题吗?目前,我只是在整个屏幕上用白色bg或自定义bg来“清除”屏幕。到目前为止,没有任何问题或任何事情,因为我正在处理的应用程序非常小。
答案 0 :(得分:2)
当您将图像blit到曲面时,它基本上将其绘制在曲面上。 blitting或blitted对象的位置不会保存,也无法更改。就像你将图像画在画布上一样。新的将覆盖旧的,如果它与另一个图像碰撞,将无法摆脱一个图像。
解决此问题的最常用方法是使用surface.fill()
完全清除屏幕,并在每帧重绘图像。
要回答有关在有大量图像时是否存在问题的问题,请回答。窗口只会保存为每个像素的特定颜色,就像你拍摄相机的普通照片一样,所以无论你拍摄多少物体,游戏都会花费相同的时间。
答案 1 :(得分:1)
有多种方法:
正如您所做的那样清洁整个背景。 如果计算机与fps保持同步,也许最好不要这样做。
仅清洁您对象的区域(请参阅pygame.sprite.RenderUpdates)
在你的情况下,如果你有很多堆叠的对象,也许最好编写自己的解决方案,试图在碰撞的矩形之间找到 union ,以避免重叠相同的背景。结束了。