0

再会,

我有 15 张图片需要作为按钮。我有使用 Box() 的按钮(Box - 看起来像这样)

class Box(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface((35, 30))
        self.image = self.image.convert()
        self.image.fill((255, 0, 0))
        self.rect = self.image.get_rect()
        self.rect.centerx = 25
        self.rect.centery = 505
        self.dx = 10
        self.dy = 10

我正在尝试使按钮与图像精灵一起使用。所以我试图复制盒子的类样式并对我的图标做同样的事情..代码看起来像这样......

class Icons(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("images/airbrushIC.gif").convert()
        self.rect = self.image.get_rect()
        self.rect.x = 25
        self.rect.y = 550

main() 中的代码

rect = image.get_rect()
rect.x = 25
rect.y = 550
ic1 = Icons((screen.get_rect().x, screen.get_rect().y))
screen.blit(ic1.image, ic1.rect)
pygame.display.update()

此代码产生位置错误(接受 1 个参数,但有 2 个)错误或图像未引用错误(在 Icon 类内)。

我不确定这是否是正确的方法。我确定我需要加载所有图像(作为精灵)...将它们存储在一个数组中...然后让我的鼠标检查如果它使用 for 循环单击数组中的一项。

谢谢。

4

1 回答 1

2

您正在尝试将参数传递给Icons(),但您的__init__()方法不接受任何参数。如果你想将它们传递给Sprite()构造函数,那么你可能想要类似的东西:

class Icons(pygame.sprite.Sprite):
    def __init__(self, *args):
        pygame.sprite.Sprite.__init__(self, *args)
        ...

它使用星号运算符接受任意数量的额外参数 ( *args),然后将它们传递给 sprite 构造函数。

于 2012-06-17T02:18:06.103 回答