繁体   English   中英

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

[英]Pygame mouse click | Toggle play pause in music playing s

我正在尝试制作音乐播放系统。 我创建了一个名为 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()

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

如果togglePlayaPause为1,则btn_play必须被别人评价如果togglePlayaPause为0,则btn_pause已进行评估。

使用if elif else语句执行此操作:

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

    # [...]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM