Как я могу сделать аудио логотип в Pygame? - PullRequest
0 голосов
/ 12 января 2019

Некоторые проблемы в цикле while.

Я создаю аудио игру. Мне нужно создать логотип игры, когда пользователь открывает игру. Это также может быть необходимо для любителей игр. Мне необходимо, чтобы звук воспроизводился, а программа не работала дальше до конца воспроизведения. Также, чтобы, если пользователь нажал Return, вы могли пропустить это. Я решил сделать это через цикл while. Но это не работает правильно ...

Мой класс звука

from attr import attrs, attrib, Factory
import pygame
import time
pygame.mixer.init(frequency=44100, buffer=512)
@attrs
class sound():
    handle=attrib(default=Factory(int))
    def load(self,filename=""):
        self.handle = pygame.mixer.Sound(filename)
    def play(self):
        self.handle.play()
    def stop(self):
        self.handle.stop()
    def get_volume(self):
        return self.handle.get_volume()
    def set_volume(self, new_volume):
        self.handle.set_volume(new_volume)
    def fade(self, fadeSpeed):
        self.handle.fadeout(fadeSpeed)
    def isPlaying(self):
        return self.handle.get_busy()

Мой логотип функции

import pygame
from AGK.audio import sound
from AGK.mainframe import keyboard
import time
dlgAudio = sound.sound()
def dlgPlay(dlgSound, dlgFade=False, fadeSpeed=1000):
    dlgAudio.load(dlgSound)
    dlgAudio.play()
    while dlgAudio.isPlaying:
        if keyboard.pressed() == pygame.K_RETURN:
            if dlgFade == True:
                dlgAudio.fade(fadeSpeed)
                time.sleep(2)
            break

Если я нажимаю Return во время воспроизведения логотипа, он работает. Звук затухает и выход из петли. Но если звук воспроизводится до конца, то после завершения воспроизведения цикл продолжает работать, пока вы не нажмете Return. Хотя цикл должен работать, пока звук не будет воспроизведен.

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