Pygame在Surface上绘制与直接在显示器上绘制的区别

3

如何在pygame中绘制对象?

1)在表面上进行绘制,然后将其翻转到显示器上。

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super(Player, self).__init__()
        self.surf = pygame.Surface((75, 25))
        self.surf.fill((255, 255, 255))
        self.rect = self.surf.get_rect()
player = Player()
screen.blit(player.surf, player.rect)

2) 直接在显示器上绘制。

pygame.draw.rect(screen, color, (x,y,width,height), thickness)

这两种方法有什么区别,哪种更受欢迎,为什么?

哪一种更快?

1个回答

0
如果你想使用 pygame.sprite.Group,那么最好使用pygame.sprite.Sprite对象进行操作,因为你可以将对象添加到组中。
当你使用一个组时,你可以使用.update()来更新组中所有的精灵,并使用draw()方法来绘制组中的所有精灵。

但是请注意,pygame.sprite.Groupdraw()方法使用了对象的.rect.image属性,因此你需要将.surf重命名为.image。例如:
class Player(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__() 
        self.image = pygame.Surface((75, 25))
        self.image.fill((255, 255, 255))
        self.rect = self.image.get_rect(center = (x, y))

    def update(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_d]
            self.rect.x += 1
        # [...]

screen = pygame.display.set_mode((width, height))

# [...]

my_group = pygame.sprite.Group()
my_group.add(Player(player_x, player_y))

while True:
    # [...]

    my_group.update()

    # [...]

    my_group.draw(screen)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接