为什么 pygame 窗口动画仅在我移动光标时才起作用

屏幕仅在我移动光标时更新有人知道如何解决此问题


import pygame, sys



def draw_floor():

    screen.blit(floor_surface, (floor_animation, 400))

    screen.blit(floor_surface, (floor_animation + 275,400))



pygame.init()


screen = pygame.display.set_mode((275,512))

clock = pygame.time.Clock()


bg_surface = pygame.image.load('C:/Users/cuerv/Downloads/flappy-bird-assets-master/flappy-bird-assets-master/sprites/background-day.png').convert()

floor_surface = pygame.image.load('C:/Users/cuerv/Downloads/flappy-bird-assets-master/flappy-bird-assets-master/sprites/base.png').convert()

floor_animation = 0


bird_surface = pygame.image.load('C:/Users/cuerv/Downloads/flappy-bird-assets-master/flappy-bird-assets-master/sprites/bluebird-midflap.png').convert()

bird_rect = bird_surface.get_rect(center = (100,256))


while True:

   

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

         

            pygame.quit()

            sys.exit()

        screen.blit(bg_surface, (0, 0))

        screen.blit(bird_surface, (bird_rect))

        

        floor_animation -= 1

        draw_floor()

        if floor_animation <= -275:

            floor_animation = 0            

        screen.blit(floor_surface, (floor_animation, 400))





    pygame.display.update()

    clock.tick(120)

    enter code here


呼唤远方
浏览 186回答 2
2回答

精慕HU

这是缩进的问题。在应用程序循环而不是事件循环中绘制场景:# application loopwhile True:       # event loop    for event in pygame.event.get():        if event.type == pygame.QUIT:                     pygame.quit()            sys.exit()        #<--| INDENTATION    screen.blit(bg_surface, (0, 0))    screen.blit(bird_surface, (bird_rect))         floor_animation -= 1    draw_floor()    if floor_animation <= -275:        floor_animation = 0                screen.blit(floor_surface, (floor_animation, 400))    pygame.display.update()注意,事件循环仅在事件发生时执行,但应用程序循环是连续执行的。

PIPIONE

我猜想在你的函数中,当鼠标悬停在图像上或鼠标在时间 t1 的位置!= t2 的位置时,就会发生动作。还提供代码,以便我们检查可能出现的问题:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python