2016-09-17 68 views
1

我在做一个pygame游戏。我有3个曲面:gameDisplay(其中的字符和背景直接渲染到),guiSurfinvSurf 我有一个时钟在核心pyhon中显示游戏时间与pygame字体。我将时钟分配到guiSurf,然后在我的游戏循环I blit guiSurfinvSurfgameDisplay。我的问题是,时钟从它原来的位置留下了痕迹。 IE当它从'07:00'变为'07:01'时,'01'在'00'的开头,不应该在那里。我会发布代码,但像400行。有谁知道我可能做错了什么。 Link to a picture of the clock未能更新pygame曲面

回答

0

确保通过在文本所在的位置将另一图像进行blitting来“清除”正在打印时间的区域。当您将曲面绘制到屏幕上时,它只会变成一个“曲面”,它总是绘制直到被其他东西覆盖。你需要清除这个表面之前,你blit其他的东西,否则你会得到你看到的效果。通过在每个游戏开始时刻简单调用display_name.fill((0,0,0)),您将“清除”屏幕,然后在没有溢出效应的情况下重新绘制文本。当然,你必须在每次打勾时将所有东西重新投射到屏幕上,但这不应该成为一个问题,除非你需要提取数以千计的物品。如果你不想重绘所有东西,那么在文本上划一个小矩形,然后重绘它,你的问题应该被解决。

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

0

显然,时钟在guiSurf上传了两次。我想它会不断堆叠以前的时间形象(7:00,然后是7:01,然后是7.02等)。在绘制时间之前,您需要清除保持时钟的表面:clock_surf.fill(clearcolor, clock_surf.get_rect())