四角形を描画する場所を処理する簡単なアニメーションがあり、サーフェスをクリックすると、四角形が左にスライドして 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()
なぜこのような振る舞いをするのでしょうか?おそらく、システムは一時停止の瞬間と 2 番目の for ループのティックとの間で同期していません。
PS: 私は Windows 7 を使用しており、母国語ではない英語で申し訳ありません