0

良い一日、

ボタンにする必要がある画像が 15 枚ほどあります。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ループを使用して配列内の項目の1つをクリックしている場合。

ありがとう。

4

1 に答える 1

2

に引数を渡そうとしてIcons()いますが、__init__()メソッドは引数を取りません。それらをSprite()コンストラクターに渡したい場合は、おそらく次のようなものが必要でした。

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

これは、スター演算子を使用して任意の数の追加引数 ( *args) を受け入れ、それらをスプライト コンストラクターに渡します。

于 2012-06-17T02:18:06.103 に答える