无法从pyganim获得面具

时间:2017-08-07 21:45:42

标签: python pygame

import pygame, PygAnimation
screen = pygame.display.set_mode((500,500))
class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = PygAnimation([("png/Attack__000.png",.08),   ("png/Attack__001.png",.08),("png/Attack__002.png",.08),
            ("png/Attack__003.png",.08),("png/Attack__004.png",.08),("png/Attack__005.png",.08),],True)
    def update(self):
        self.image.play()
        self.mask = pygame.mask.from_surface(self.image)

    def draw(self):
        self.image.blit(screen,(100,100)) 

p = Player()


running = True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((255,255,255))

    p.draw()
    p.update()
    pygame.display.update()

我在尝试获取掩码时一直遇到错误,它说参数1必须是pygame.surface而不是pyganimation。 我已经尝试了许多方法来获得面具,但所有的努力都被证明是徒劳的

1 个答案:

答案 0 :(得分:0)

由于追溯表示您必须将pygame.Surface传递给pygame.mask.from_surface,但self.imagePygAnimation对象而非表面。您可以通过调用pygame.Surface来获取动画的当前帧(self.image.getCurrentFrame())。

self.mask = pygame.mask.from_surface(self.image.getCurrentFrame())

此外,持续时间以毫秒为单位,因此将.08更改为更高的50