2016-09-17 73 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())