无法更新pygame表面

时间:2016-09-17 20:54:28

标签: python python-3.x pygame python-3.5 pygame-surface

我正在做一个pygame游戏。我有3个曲面:gameDisplay(角色和背景直接渲染到其中),guiSurfinvSurf 我有一个用核心pyhon制作的时钟,用pygame字体显示游戏时间。我把时间点到了guiSurf,然后在我的游戏循环中,我将guiSurfinvSurf发送到gameDisplay。我的问题是时钟会从它的位置留下一个标记。 IE从'07:00'变为'07:01'时,'01'位于'00'的顶部,不应该存在。我会发布代码,但有400行。有谁知道我可能做错了什么。 Link to a picture of the clock

2 个答案:

答案 0 :(得分:0)

确保你清楚'通过在文本所在的位置上打印另一个图像来打印时间的区域。当你将表面绘制到屏幕上时,它就会变成一个表面。总是被绘制,直到被其他东西覆盖。你需要先清除这个表面,然后再给它做一些其他的表面,否则你会得到你看到的效果。通过在每个游戏开头的简单调用display_name.fill((0,0,0)),您将清除'屏幕然后将文本重新绘制到其上而没有溢出效应。当然,你必须在屏幕上每次勾选所有内容,但这不应该是一个问题,除非你需要blit成千上万的项目。如果您不想重新绘制所有内容,则在文本上方放置一个小矩形,然后重绘它,您的问题应该得到解决。

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

答案 1 :(得分:0)

可见,guiSurf上的时钟是两次。而且我猜它会继续堆叠上一个时间图像(7:00,然后是7:01,然后是7.02,依此类推)。在抽出时间之前,您需要清除保持时钟的表面:#ref