Pygame奇数blit行为

2024-10-02 08:23:04 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我一直在制作一个基本的pygame程序,它有一些按钮和背景,在设置系统时,当鼠标悬停在上面时,按钮会稍微变暗,单击时会变暗,我遇到了这个问题,每次单击按钮,按钮都会变暗,这是应该的,但在释放时,在返回到悬停灯光级别之前,该按钮将返回到全亮度,仅持续一两帧

class button:
    def __init__(self, action, actionParam, buttonPic, x, y, w, h):
        self.action = action
        self.actionParam = actionParam

        self.bx = int(uiX + (x * uiW))
        self.by = int(uiY + (y * uiH))
        self.bw = int(w * uiW)
        self.bh = int(h * uiH)

        self.buttonPic = pygame.transform.scale(buttonPic, (self.bw, self.bh))

        self.over = pygame.Surface((self.bw, self.bh))
        self.over.fill((0,0,0))

    def draw_button(self):
        if window.blit(self.buttonPic, (self.bx, self.by)).collidepoint(mouse):
            self.over.set_alpha(50)
            if click[0]:
                self.over.set_alpha(100)
        else: self.over.set_alpha(0)
        window.blit(self.buttonPic, (self.bx, self.by))
        window.blit(self.over, (self.bx, self.by))

    def click_button(self):
        if window.blit(self.buttonPic, (self.bx, self.by)).collidepoint(mouse):
            self.action(self.actionParam)

当我将鼠标悬停在按钮上时,它也不会对颜色变暗做出反应,而在我的互联网浏览器上,当我将鼠标悬停在按钮上时,它会做出反应

注意,我在collidepoint线中使用的“mouse”定义为pygame.mouse.get_pos(),每次在绘制按钮之前运行主循环 “点击”是pygame.mouse.get_pressed()


Tags: selfbybuttonactionwindow按钮pygameover

热门问题