0

オンクリックボタンで小切手を印刷して鉛筆機能を実行しようとしています。現時点では、ボックススプライトにカーソルを合わせると、印刷と鉛筆の機能が実行されます。それら2を実行するONCLICKである必要があります。誰かが私を助けることができますか?ありがとう!(これはすべて関連するコードである必要があります。さらに必要な場合はお知らせください:)

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

while keepGoing:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            keepGoing = False
        box = Box()
        allSprites = pygame.sprite.Group(box)   
        allSprites.draw(screen)

        if event.type == MOUSEMOTION:
            x,y = event.pos
            if box.rect.collidepoint(x,y) and pygame.MOUSEBUTTONUP:                      
                print("collide works")
                pencil(background,clock,keepGoing,screen)
        pygame.display.flip()
4

1 に答える 1

4

コードはマウスのクリックをチェックするのではなく、マウスの動きをチェックします。

ボックスのクリックをテストする場合は、イベントではなく、チェックする条件MOUSEBUTTONDOWNまたはMOUSEBUTTONUPイベント(クリックのどの部分に反応するかによって異なります)を変更しMOUSEMOTIONます。

ただし、コードには他にもいくつか問題があります。たとえば、すべてのイベントの後にボックスとグループを作成します。おそらく、ゲームループに入る前に、一度だけ作成する必要があります(これにより、より意味があり、パフォーマンスが向上します)。

于 2012-06-16T08:32:04.577 に答える