如何在pygame中只对背景进行一次blit?

时间:2017-12-17 15:03:33

标签: python background pygame blit

我正在制作一个平台游戏,而且我在遇到背景时遇到了问题。 在我目前的代码中,游戏循环每帧都在游戏窗口上绘制背景,这使得当我想要使用任何不是纯色的背景时游戏真的很滞后。 我的问题是我如何只对背景进行一次(如果可能的话),这样游戏就不会那么慢。

以下是我的Game类的一些部分导致图像blitting:

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()

1 个答案:

答案 0 :(得分:1)

调用背景图面的convert方法,例如

self.bg = pg.image.load("background.jpg").convert()

这将改善性能。

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