Python 如何在pygame中只显示一次背景?

Python 如何在pygame中只显示一次背景?,python,background,pygame,blit,Python,Background,Pygame,Blit,我正在制作一个平板电脑,但我在浏览背景时遇到了一个问题。 在我当前的代码中,游戏循环在游戏窗口的每一帧上绘制背景,这使得当我想使用任何不仅仅是纯色的背景时,游戏变得非常滞后。 我的问题是,我如何只在背景上闪烁一次(如果可能的话),这样游戏就不会慢很多 以下是我的游戏课程中的一些部分,它们会导致图片的快速播放: class Game: def __init__(self): pg.init() pg.mixer.init() self.bg

我正在制作一个平板电脑,但我在浏览背景时遇到了一个问题。 在我当前的代码中,游戏循环在游戏窗口的每一帧上绘制背景,这使得当我想使用任何不仅仅是纯色的背景时,游戏变得非常滞后。 我的问题是,我如何只在背景上闪烁一次(如果可能的话),这样游戏就不会慢很多

以下是我的游戏课程中的一些部分,它们会导致图片的快速播放:

class Game:
    def __init__(self):
        pg.init()
        pg.mixer.init()
        self.bg = pg.image.load("background.jpg")
        self.screen = pg.display.set_mode((WIDTH, HEIGHT))
        pg.display.set_caption(TITLE)
        self.clock = pg.time.Clock()
        self.running = True
        self.font_name = pg.font.match_font(FONT_NAME)
        self.pillarhp = 100


    def new(self):
        self.run()

    def run(self):
        self.clock.tick(FPS)
        self.playing = True
        while self.playing:
            self.clock.tick(FPS)
            self.events()
            self.update()
            self.draw()


    def draw(self):
        now = pg.time.get_ticks()
        self.screen.blit(self.bg, [0, 0])
        self.screen.blit(self.island, [0,0])
        self.all_sprites.draw(self.screen)
        self.draw_text("Score: " + str(self.score), 20, BLACK, 40, 20)
        self.draw_text("Pillar HP: " + str(self.pillarhp), 20, BLACK, 40, 50)
        pg.display.flip()
调用背景曲面的方法,例如

self.bg = pg.image.load("background.jpg").convert()
这将提高性能


对于具有每像素透明度的图像,您可以使用
convert_alpha
方法,但使用
convert
方法转换的图像将更快地显示。

请向我们显示您的代码(a)。调用背景曲面的方法,例如
self.bg=pg.image.load(“background.jpg”).convert()。这可能会提高性能。背景图像有多大?我添加了.convert(),但它给了我一个错误:self.bg=pg.image.load(“background.jpg”)。convert()pygame.error:没有设置视频模式。图像为28.0 KB,1280x700必须在加载图像之前创建屏幕/显示。这行必须上移
self.screen=pg.display.set_模式((宽度、高度))
。这就解决了它!非常感谢@skrx