问题描述
||
我是pygame的新手,现在我正在使用精灵。我的问题是如何检测是否已单击精灵?我想像单击按钮一样在单击精灵时执行某些操作。
谢谢 :)
[编辑]
斯蒂芬。此外,还有一种方法可以知道单击的精灵是谁?这是示例代码
Boxes = pygame.sprite.Group()
for color,location in [([255,0],[0,0]),([0,255,[60,60]),255],[120,120])]:
Boxes.add(updownBox(color,location)
例如,我单击[0,0]位置上的精灵,程序应打印其颜色或位置。再次感谢 :)
解决方法
自从我在Pygame中进行任何操作以来已经很长时间了,但是IIRC的基本思想是您的子画面应具有describes1ѭ属性,以描述其在屏幕上的位置。当您收到鼠标单击事件时,您可以通过调用
pygame.mouse.get_pos()
获得位置。然后,您可以通过在两个rect
对象上调用pygame.sprite.collide_rect()
,来检查以鼠标位置为中心的rect
与精灵的矩形之间是否存在冲突。
一个很好的例子可以在这里找到。
, 更简单:Rect.collidepoint(x,y)
主循环
#in event handling:
if event.type == MOUSEMOTION: x,y = event.pos
for box in boxes:
if box.rect.collidepoint(x,y): print \'yay!\'
Rect和Sprite中还有更多的碰撞函数。看到:
http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.spritecollide
http://www.pygame.org/docs/ref/sprite.html
http://www.pygame.org/docs/ref/rect.html