Некоторые проблемы в цикле 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. Хотя цикл должен работать, пока звук не будет воспроизведен.