pygame的工作方式是,它内部具有您要更新的屏幕的表示形式。因此,它完全从黑色开始,然后执行第一个“ blit”操作。这将更新内部表示。然后,当您调用“
pygame.display.flip”时,它将在屏幕上显示该表示。但是,这不会为您的下一帧自动“清除”您的表示形式,使其变回全黑。因此,在下一帧上,您再次进行blit(例如,稍微向左),并且仍然保留了第一blit,从而创建了“
trail”。
因此,对于您正在做的事情,最好的办法是在循环中清除屏幕的内部表示,然后再开始绘制下一帧。您可以通过用单色填充它来“清除”屏幕,就像这样…
BLACK = (0,0,0)....screen.blit(cv9, (xposCv9, yposCv9))pygame.display.flip()clock.tick(60)screen.fill(BLACK) # Add this to "clear" the screen.
请注意,如果您选择走这条路线,这意味着您将需要在每帧中重绘所有元素(而不仅仅是自上一帧以来发生变化的元素)。
顺便说一句,如果您想知道,为什么在最后没有自动清除框架是有充分的理由的。在某些情况下,仅更新屏幕中要更新的部分可能会更快。这可能会导致某些应用程序中的性能加速。但是,最好从清除屏幕开始,如上面的示例所示。



