pygame初学者问题
我刚开始写一个非常简单的pygame代码,目的是在白色背景上画一条绿色的线。不过,我发现必须使用pygame.display.flip()才能让这条线显示出来。但是每次我做出改变的时候都得用这个,看起来这样做太麻烦了。我是不是漏掉了什么?
2 个回答
3
是的,每次你想更新屏幕的时候都得调用它。默认情况下,pygame使用的是双缓冲技术,你可以在这里了解更多。
3
这样做是有原因的。双缓冲是一种用来防止“闪烁”的技术。简单来说,你想先把画面绘制到内存中,而不是直接显示在屏幕上,然后等画好后一次性把整个画面推送到显示器上。否则,你可能会看到同一画面中的不同元素在不同的时间出现。
你需要做的是,每次绘制画面时只调用一次 pygame.display.flip()
,而不是在每次更改后都调用。通常,这个过程是通过一个叫做“draw
”的函数来完成的,这个函数在处理完物理计算和游戏规则后会在每帧的最后被调用,然后在 draw
函数结束时再调用 flip()
。