在将头撞到显示器上 2 小时后,我意识到:
display.blit(mypic, posx, posy)
pygame.display.update()
只是不起作用(即不会在屏幕上显示任何内容(,除非我调用:
pygame.event.get()
这是地球上最奇怪的虫子,还是我错过了什么?
我在python 2.7上运行pygame,mac os high sierra,是的,如果这是由于 pygame 和 Mac OS 之间的该死的不兼容,我会最不感到惊讶。
关于这里出了什么问题的提示吗?
示例代码:
import pygame
winWidth = 800
winHeight = 600
posx = 200; posy = 200
mypic = pygame.image.load("path_to_my_picture.jpg")
COL_BACKGROUND = (255,255,255)
DISPLAYSURF = pygame.display.set_mode((winWidth, winHeight))
pygame.init()
display.fill(COL_BACKGROUND)
display.blit(mypic, posx, posy)
# only including the following line it will blit the picture:
# pygame.event.get()
pygame.display.update()
我不是 100% 确定它如何与 mac 配合使用,但我假设它与 Windows 相似,因为如果您不定期调用pygame.event.get()
操作系统会认为窗口已停止响应并不再更新它。
这在 Pygame 文档的事件页面的 pygame.event.pump(( 下有提及。
对于游戏的每一帧,您都需要进行某种调用 到事件队列。这可确保您的程序可以在内部进行交互 与操作系统的其余部分一起使用。如果您不使用其他 游戏中的事件函数,您应该调用 pygame.event.pump(( 来 允许 pygame 处理内部操作。