Pygame 没有响应!尽管调用事件和更新屏幕

问题描述

如果我不将它添加到类中,它可以完美运行,但是如果我这样做了它没有响应,我已经尝试使用 pygame.update,作为 pygame.event.pump/ get 甚至混乱是事件应该开始的,但问题仍然存在。我做错了什么?下面的代码

.
.
class start_game:
    def __init__(self,path,width = 400,height = 600):
        self.width = width
        self.height = height
        self.head  = None
        self.running = False
        self.path   = path
        
        pygame.init()
        pygame.mixer.init()
        
        self.background = load_img(self.path + '\AnimatedStreet.png')
        self.enemy = pygame.image.load(self.path + '\Enemy.png')
        self.backg0_pos =  [0,0] 
        self.screen = pygame.display.set_mode((self.width,self.height))
         
    
    def _run(self):
        self.running = True
        
        while self.running:
            #pygame.event.pump()
            self.screen.fill([0,0])
            self.screen.blit(self.background,self.backg0_pos)
            
            pygame.display.flip()
            pygame.display.update()
            
            self.backg0_pos[1] += 1
   
            self._init_controls()
            
            return
    
    def _init_controls(self):
        
        for event in pygame.event.get():
            if event.type == KEYDOWN:
                if event.key == K_RIGHT:
                    self.player_pos[0] += 5

                if event.key == K_q:
                    pygame.quit()
             
        return
    
a = start_game(path)
a._run()

解决方法

错误是放置在 while 循环中的返回函数导致它停止。 解决方案是将 return 函数放在 run 函数中。