Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检测精灵是否在pygame中被点击_Python_Sprite_Pygame - Fatal编程技术网

Python 如何检测精灵是否在pygame中被点击

Python 如何检测精灵是否在pygame中被点击,python,sprite,pygame,Python,Sprite,Pygame,我是pygame的新手,现在我和精灵一起工作。我的问题是如何检测精灵是否被点击?当精灵像按钮一样被点击时,我想做点什么 thx:) [已编辑] 斯蒂芬。另外,有没有办法知道谁是被点击的精灵?下面是示例代码 boxes = pygame.sprite.Group() for color, location in [([255, 0, 0], [0, 0]), ([0, 255, 0], [60, 60]),

我是pygame的新手,现在我和精灵一起工作。我的问题是如何检测精灵是否被点击?当精灵像按钮一样被点击时,我想做点什么

thx:)

[已编辑]

斯蒂芬。另外,有没有办法知道谁是被点击的精灵?下面是示例代码

boxes = pygame.sprite.Group()
for color, location in [([255, 0, 0], [0, 0]),
                        ([0, 255, 0], [60, 60]),
                        ([0, 0, 255], [120, 120])]:
    boxes.add(UpDownBox(color, location)

例如,我单击位置[0,0]中的精灵,程序应打印其颜色或位置。再次感谢:)

我很久没有在Pygame中做任何事情了,但IIRC的基本思想是,您的精灵应该有一个描述其在屏幕上位置的
rect
。当您收到鼠标单击事件时,您可以通过调用
pygame.mouse.get\u pos()
来执行此操作。然后,通过在两个
rect
对象上调用
pygame.sprite.collide_rect()
,可以在鼠标位置居中的
rect
和精灵的rect之间切换

可以找到一个很好的例子。

更简单:

主回路 Rect和Sprite中还有几个碰撞函数。见:


唉,示例链接不再有效。
#in event handling:
if event.type == MOUSEMOTION: x,y = event.pos

for box in boxes:
    if box.rect.collidepoint(x,y): print 'yay!'