Нужна помощь, чтобы прокрутить событие - PullRequest
0 голосов
/ 25 апреля 2019

Я создаю программу на Python, используя Pygame, и я не могу найти работающий метод для определения, когда я прокручиваю вверх.

Я пытаюсь воссоздать популярное видео под названием "Межзвездная мышь". https://www.youtube.com/watch?v=aANF2OOVX40

Я пытаюсь заставить его воспроизводить ту же музыку при прокрутке (чтобы сделать то же самое без необходимости ее редактирования).

Я смог заставить это работать с нажатиями клавиш, выполнив что-то вроде этого:

keys = pygame.key.get_pressed()

if keys[pygame.K_KEYNAME]:
     pygame.mixer.music.unpause()

Кажется, что просто использование клавиш работает нормально, но мне нужно использовать колесо мыши.

Это основной цикл:

run = True

while run:
    #quit game after pressing the close button
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed()

    #exit game by pressing ESC
    if keys[pygame.K_ESCAPE]:
        run = False

    #scroll to activate
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 4:
                pygame.mixer.music.unpause()
            else:
                pygame.music.pause()


    #update background
    win.blit(bg, (width / 4, height / 4))
    pygame.display.update()



pygame.quit()

Результаты очень противоречивы. Иногда, если я прокручиваю очень быстро, он начинает играть примерно через секунду, но никогда не останавливается. Иногда это просто не играет вообще.

1 Ответ

0 голосов
/ 25 апреля 2019

Эта часть здесь:

for event in pygame.event.get():
    if event.type == pygame.MOUSEBUTTONDOWN:
        if event.button == 4:
            pygame.mixer.music.unpause()
        else:
            pygame.music.pause()

Каждый раз, когда у вас есть event.type == pygame.MOUSEBUTTONDOWN, вы либо приостанавливаете, либо приостанавливаете музыку.Щелчки мыши и прокрутка вниз приостановят вашу музыку.Я бы изменил это на конкретный вариант паузы, скажем if event.button == 2 вместо вашего else для лучшего контроля.

...