1

我正在制作一个 pygame 游戏。我有 3 个表面:(gameDisplay角色和背景直接渲染到的地方),guiSurfinvSurf 有一个在核心 pyhon 中制作的时钟,它使用 pygame 字体显示游戏时间。我将时钟传送到guiSurf然后在我的游戏循环中我传送guiSurf到。我的问题是时钟在原来的地方留下了痕迹。IE 当它从“07:00”变为“07:01”时,“01”位于不应该存在的“00”之上。我会发布代码,但有 400 行。有谁知道我可能做错了什么。链接到时钟的图片invSurfgameDisplay

4

2 回答 2

0

确保通过在文本所在的位置上绘制另一个图像来“清除”打印时间的区域。当您将表面绘制到屏幕上时,它只是成为一个始终绘制的“表面”,直到被其他东西覆盖。你需要先清除这个表面,然后再将其他东西粘贴到它上面,否则你会得到你看到的效果。通过在每个游戏开始时简单地调用 display_name.fill((0,0,0)),您将“清除”屏幕,然后在屏幕上重新绘制文本,而不会产生溢出效应。当然,您必须在每次滴答时将所有内容重新传输到屏幕上,但这应该不是问题,除非您需要传输数千个项目。如果您不想重绘所有内容,请在文本上绘制一个小矩形,然后重绘它,您的问题应该得到解决。

我希望这可以帮助您解决问题和愉快的编码!

于 2016-09-17T21:14:24.210 回答
0

显然,guiSurf 上的时钟被闪动了两次。而且我猜它一直在堆叠之前的时间图像(7:00,然后是 7:01,然后是 7.02 等等)。在将时间绘制到其中之前,您需要清除持有时钟的表面:clock_surf.fill(clearcolor, clock_surf.get_rect())

于 2016-09-17T21:18:04.470 回答