在.rect pygame的行动时,鼠标“点击”?(Pygame action when mouse

2019-06-27 11:20发布

我一直在写一个测试功能学习鼠标“点击”动作上pygame.rect如何将导致效应初探。

至今:

def test():
    pygame.init()
    screen = pygame.display.set_mode((770,430))
    pygame.mouse.set_visible(1)
    background = pygame.Surface(screen.get_size())
    background = background.convert()
    background.fill((250,250,250))
    screen.blit(background, (0,0))
    pygame.display.flip()

    ## set-up screen in these lines above ##

    button = pygame.image.load('Pictures/cards/stand.png').convert_alpha()
    screen.blit(button,(300,200))
    pygame.display.flip()

    ## does button need to be 'pygame.sprite.Sprite for this? ##
    ## I use 'get_rect() ##
    button = button.get_rect()

    ## loop to check for mouse action and its position ##
    while True:
        for event in pygame.event.get():
            if event.type == pygame.mouse.get_pressed():
                ## if mouse is pressed get position of cursor ##
                pos = pygame.mouse.get_pos()
                ## check if cursor is on button ##
                if button.collidepoint(pos):
                    ## exit ##
                    return

我也碰到过对谷歌的网页,人们正在使用或建议使用pygame.sprite.Sprite类的图片,我想,这就是我的问题是从。 我检查了pygames文档并没有方法太大的凝聚力,恕我直言。 我明明简单的东西,但是,我想get_rect将使在pygames图像能够检查是否按下时鼠标的位置已经结束了吗?

编辑:我想我需要调用pygame.sprite.Sprite方法,使图像/ rects互动?

Answer 1:

嗯,如果有人有兴趣或有类似的问题,这正是我需要的改变。

第一关,删除:

button = button.get_rect()

然后:

screen.blit(button, (300, 200))

应该:

b = screen.blit(button, (300, 200))

这创造一个Rect的,其中的按钮位于屏幕上的面积。

上:

if event.type == pygame.mouse.get_pressed()

我更改为:

if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:

所述pygame.mouse.get_pressed()得到所有三种小鼠按钮(MOUSEBUTTONDOWN,MOUSEBUTTONUP,或MOUSEMOTION)的状态。 我还需要在添加event.button == 1指定,这是被按下了“左鼠标按钮。

最后:

`if button.collidepoint(pos):` 

至:

`if b.collidepoint(pos):`

使用Rect B的collidepoint方法



Answer 2:

我认为RECT方法调用collidepoint,不会发生冲突* R *点。 这里是链接到文档!



文章来源: Pygame action when mouse 'click' on .rect?