我有一个简单的动画来处理绘制矩形的位置,当我单击表面时,矩形向左滑动并等待 2 秒,然后通过向右滑动运动重新绘制它,但如果我缩小或移动窗口和尝试一下,窗口在等待的那一刻冻结。
这是代码:
import sys, pygame
from pygame.locals import *
pygame.init()
FPS = 30
BGCOLOR = (255, 255, 255)
RECTCOLOR = (10, 0, 199)
DS = pygame.display.set_mode( (200,200) )
CLOCK = pygame.time.Clock()
pygame.display.set_caption('Demo')
def main():
DS.fill(BGCOLOR)
pygame.draw.rect(DS, RECTCOLOR, (50, 50, 100, 100))
pygame.display.update()
while 1:
ev = pygame.event.wait()
if ev.type == QUIT:
pygame.quit()
sys.exit()
elif ev.type == MOUSEBUTTONUP:
animation()
def animation():
pygame.event.set_blocked(MOUSEBUTTONUP)
for x in range(10, 101, 10):
pygame.draw.rect(DS, BGCOLOR, (150 - x,50,x,100))
pygame.display.update()
CLOCK.tick(FPS)
pygame.time.wait(2000) # 2 seconds
for x in range(10, 101, 10):
pygame.draw.rect(DS, RECTCOLOR, (50,50,x,100))
pygame.display.update()
CLOCK.tick(FPS)
pygame.event.set_allowed(MOUSEBUTTONUP)
if __name__ == '__main__':
main()
为什么我们有这种行为?,也许系统在第二个 for 循环中的暂停时刻和滴答声之间没有同步
PS:我在 Windows 7 上,抱歉我的英语不是我的母语