Pygame, 屏幕只在退出时更新 pygame window?
Pygame, screen only updates when exiting pygame window?
我是 pygame 的新手,我需要一些帮助,因为我的代码无法正常工作。
好的,问题来了:我希望屏幕在我 运行 时变白,但它仍然是黑色的,但是当我按下退出键时,它会变白大约一秒钟然后关闭。
当我放一张图片(比如 player.png)时它会出现大约一秒钟然后退出。我不知道我做错了什么,
请帮助修复代码并解释为什么会这样?
代码如下:
import pygame
pygame.init()
screen = pygame.display.set_mode((640,480))
image = pygame.image.load('player.png')
gameExit = False
gameLoop = True
pygame.display.update()
white = (255,255,255)
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
for event in pygame.event.get():
screen.fill(white)
pygame.display.update()
pygame.quit()
quit()
PS。我没有收到任何错误
Python 对缩进敏感。在您的代码中,仅在主循环结束后才调用 pygame.display.update()
。
此外,如果两个 for
循环之间的事件队列中有一个事件,您只需将背景涂成白色,然后为队列中的每个事件填充背景。
请注意,这也可能导致您的 QUIT
事件在第二个循环中 "swallowed"。
所以这个
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
for event in pygame.event.get():
screen.fill(white)
pygame.display.update()
应该是
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
screen.fill(white)
pygame.display.update()
好的,所以我同意 Sloth 的观点,但与其在最后进行所有的屏幕更新、填充和 blitting,这会降低脚本的可读性,你应该像一个 animate
函数那样 运行s 每次都在 while 循环的末尾,并将 blitting 和屏幕更新内容放入该函数中。抱歉 运行-on 句子。
哦,你不需要 GameLoop
变量。
我是 pygame 的新手,我需要一些帮助,因为我的代码无法正常工作。
好的,问题来了:我希望屏幕在我 运行 时变白,但它仍然是黑色的,但是当我按下退出键时,它会变白大约一秒钟然后关闭。
当我放一张图片(比如 player.png)时它会出现大约一秒钟然后退出。我不知道我做错了什么,
请帮助修复代码并解释为什么会这样?
代码如下:
import pygame
pygame.init()
screen = pygame.display.set_mode((640,480))
image = pygame.image.load('player.png')
gameExit = False
gameLoop = True
pygame.display.update()
white = (255,255,255)
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
for event in pygame.event.get():
screen.fill(white)
pygame.display.update()
pygame.quit()
quit()
PS。我没有收到任何错误
Python 对缩进敏感。在您的代码中,仅在主循环结束后才调用 pygame.display.update()
。
此外,如果两个 for
循环之间的事件队列中有一个事件,您只需将背景涂成白色,然后为队列中的每个事件填充背景。
请注意,这也可能导致您的 QUIT
事件在第二个循环中 "swallowed"。
所以这个
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
for event in pygame.event.get():
screen.fill(white)
pygame.display.update()
应该是
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
screen.fill(white)
pygame.display.update()
好的,所以我同意 Sloth 的观点,但与其在最后进行所有的屏幕更新、填充和 blitting,这会降低脚本的可读性,你应该像一个 animate
函数那样 运行s 每次都在 while 循环的末尾,并将 blitting 和屏幕更新内容放入该函数中。抱歉 运行-on 句子。
哦,你不需要 GameLoop
变量。