Pygame щелчок мышью |Переключить паузу в воспроизведении музыки - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь создать систему воспроизведения музыки.Я создал класс с именем 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 выполняются, в результате чего музыка останавливается послекакое-то время в нее играют.Как мне решить эту проблему?

1 Ответ

0 голосов
/ 01 февраля 2019

Если 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

    # [...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...