Pygame屏幕闪烁

时间:2014-08-15 15:37:49

标签: linux python-2.7 pygame flicker

我对Python很陌生,目前正试图用Pygame制作我的第一款游戏。我刚刚开始并遇到了问题。我的屏幕闪烁白色(填充颜色)为黑色。我试图降低嘀嗒声(甚至是1),但它没有帮助(实际上,它闪烁得更少,但仍然可见很多)。我试图在网上找到任何帮助,但到处“display.update / flip每个周期使用不止一次”被认为是一个问题而且它没有解决我的问题。

如果问题与此相关,我目前正在使用Nvidia显卡(和nouveau驱动程序)运行Fedora 20机箱。

我的代码:

import pygame
from pygame.locals import *

class visualisation(object):
   def __init__(self):
      pygame.init()

      pygame.time.Clock().tick()

      self.window = pygame.display.set_mode((0, 0), pygame.FULLSCREEN, 0)
      pygame.mouse.set_visible(False)
      pygame.display.set_caption('MY GAME')

      self.background = pygame.Surface(self.window.get_size())
      self.background = self.background.convert()
      self.background.fill((250, 250, 250))

      self.window.blit(self.background, (0, 0))
      pygame.display.update()


if __name__ == '__main__':
   running = True
   while(running):
      arcade = visualisation()

      for event in pygame.event.get():
          if event.type == KEYDOWN:
              if event.key == K_ESCAPE:
                  running = False

  pygame.quit()

提前多多感谢:)

1 个答案:

答案 0 :(得分:1)

您正在循环调用以下函数:

pygame.init()
pygame.display.set_mode((0, 0), pygame.FULLSCREEN, 0)

如果我没有弄错,这会创建一个非常糟糕的新屏幕变量。 你可能想在游戏开始时创建一个新的街机,而不是每一帧。

尝试在循环之前移动它:

running = True      
arcade = visualisation()

while(running):
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                running = False