如何检测何时单击矩形对象、图像或精灵
How to detect when a rectangular object, image or sprite is clicked
我试图判断何时单击了必须属于特定组 (pygame.sprite.Group()
) 的精灵。目前我已经尝试创建一个精灵,它只是鼠标位置并且完全不可见,将它添加到它自己的组中,并使用此代码:
clickedList = pygame.sprite.spritecollide(guess1, mice, False)
其中 guess1
是被点击的精灵,mice
是包含具有鼠标位置的精灵的组。
当我尝试这个时,我被告知 "Group has no attribute rect"。我从这里去哪里?
如果你有一个精灵 (my_sprite
) 并且你想验证鼠标是否在精灵上,那么你必须获得 [=18= 的 .rect
属性] 对象并通过 .collidepoint()
:
测试鼠标是否在矩形区域中
mouse_pos = pygame.mouse.get_pos()
if my_sprite.rect.collidepoint(mouse_pos):
# [...]
pygame.sprite.Group
中的 Sprites 可以遍历。所以测试可以循环完成:
mouse_pos = pygame.mouse.get_pos()
for sprite in mice:
if sprite.rect.collidepoint(mouse_pos):
# [...]
或者获取群组内精灵的列表,鼠标在上面的位置。如果 Sprites 不重叠,则列表将包含 0 或 1 个元素:
mouse_pos = pygame.mouse.get_pos()
clicked_list = [sprite for sprite in mice if sprite.rect.collidepoint(mouse_pos)]
if any(clicked_list):
clicked_sprite = clicked_list[0]
# [...]
我试图判断何时单击了必须属于特定组 (pygame.sprite.Group()
) 的精灵。目前我已经尝试创建一个精灵,它只是鼠标位置并且完全不可见,将它添加到它自己的组中,并使用此代码:
clickedList = pygame.sprite.spritecollide(guess1, mice, False)
其中 guess1
是被点击的精灵,mice
是包含具有鼠标位置的精灵的组。
当我尝试这个时,我被告知 "Group has no attribute rect"。我从这里去哪里?
如果你有一个精灵 (my_sprite
) 并且你想验证鼠标是否在精灵上,那么你必须获得 [=18= 的 .rect
属性] 对象并通过 .collidepoint()
:
mouse_pos = pygame.mouse.get_pos()
if my_sprite.rect.collidepoint(mouse_pos):
# [...]
pygame.sprite.Group
中的 Sprites 可以遍历。所以测试可以循环完成:
mouse_pos = pygame.mouse.get_pos()
for sprite in mice:
if sprite.rect.collidepoint(mouse_pos):
# [...]
或者获取群组内精灵的列表,鼠标在上面的位置。如果 Sprites 不重叠,则列表将包含 0 或 1 个元素:
mouse_pos = pygame.mouse.get_pos()
clicked_list = [sprite for sprite in mice if sprite.rect.collidepoint(mouse_pos)]
if any(clicked_list):
clicked_sprite = clicked_list[0]
# [...]