Pygame鼠标点击|切换音乐播放暂停

2024-10-01 13:29:18 发布

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

我想做一个音乐播放系统。我创建了一个名为Circle的类,它定义了按钮及其属性,该类有一个名为click()的方法,用于检测屏幕中的特定区域是否被单击。你知道吗

 def click(self):
    """
        In general, point x and y must satisfy (x - center_x)^2 + (y - center_y)^2 <= radius^2
    """
    current_mouse_position = pygame.mouse.get_pos()
    value_of_equation_at_current_mouse_position = (current_mouse_position[0]-self.x)**2+(current_mouse_position[1]-self.y)**2
    if (value_of_equation_at_current_mouse_position <= self.radius**2):
        if pygame.mouse.get_pressed()[0]:
            return True
    else:
        return False

我想在单击时切换播放和暂停按钮。 我的逻辑是:

 if btn_play.click():
    if togglePlayaPause == 1:
        if paused:
            pygame.mixer.music.unpause()
        else:
            pygame.mixer.music.play()

        played = 1
        togglePlayaPause = togglePlayaPause ^ 1
        pygame.time.wait(250)
        print("clicked")
        a = 0
        b = 1024
        paused = False


if togglePlayaPause == 0:
    pygame.time.wait(550)

    if btn_pause.click():
        pygame.mixer.music.pause()
        print("paused")

        paused = True
        newSong = 0
        played = 0
        togglePlayaPause = togglePlayaPause ^ 1
        pygame.time.wait(250)

if togglePlayaPause == 1:
    btn_play.draw()
else:
    btn_pause.draw()

由于play和pause按钮位于同一个坐标上,因此clik()方法对这两个按钮都返回true,同时执行if语句,结果音乐在播放一段时间后暂停。如何解决这个问题?你知道吗


Tags: selfplayifpositioncurrent按钮pygameelse
1条回答
网友
1楼 · 发布于 2024-10-01 13:29:18

如果togglePlayaPause为1,则必须计算btn_play;如果togglePlayaPause为0,则必须计算btn_pause。你知道吗

使用^{} ^{} ^{}语句执行此操作:

if togglePlayaPause == 0:
    if btn_play.click():
        if paused:
            pygame.mixer.music.unpause()
        else:
            pygame.mixer.music.play()
        # [...]

elif togglePlayaPause == 1:
    pygame.time.wait(550)

    if btn_pause.click():
        pygame.mixer.music.pause()
        # [...]

或者

if togglePlayaPause == 0:

    # [...]

else: # togglePlayaPause is either 0 or 1

    # [...]

相关问题 更多 >