2016-04-26 27 views
0

Ich schreibe einen Musikplayer mit Pygame, und ich möchte eine Titelliste abspielen, aber ich muss ein Loop-Programm schreiben, um den Spielstatus zu überwachen, aber auf diese Weise ist die CPU-Auslastung mehr als 100% und manchmal nicht reagiert, wie kann ich meinen CodeWenn ich einen Musik-Player mit Pygame schreibe, muss ich eine Schleife schreiben, um den Spielstatus zu überwachen?

while 1: 
     if pygame.mixer.music.get_busy()!=1: 
      listNumber+=1 
      player(listNumber) #tell player program go to next song 
     for event in pygame.event.get(): 
      if event.type==pygame.QUIT: 
       sys.exit() 

Antwort

1

Verwenden pygame.mixer.music.set_endevent(music_stop_event) und dann prüfen, für dieses Ereignis in der Ereignisschleife ändern.

music_stop_event = pygame.USEREVENT + 1 

(und in der Ereignisschleife)

events = pygame.event.get() 

    for event in events: 
     if event.type == pygame.QUIT: 
      sys.exit() 

     if event.type == music_stop_event: 
      # do something 
+0

Ich habe Code wie folgt 'Ereignisse schreiben = pygame.event.get() für Veranstaltung in Veranstaltungen: wenn event.type == SONG_END: ​​ itemlistNumber + = 1 Nextsong (itemlistNumber) während 1: wenn event.type == pygame.QUIT: sys.exit() '
aber nicht' Ereignisse = pygame.event.get() für Veranstaltung in Veranstaltungen: wenn event.type == pygame.QUIT: sys.exit() wenn event.type == music_stop_event: # tun something'
oder es nicht spielen, aber wenn ich schreibe ' while1' es bald keine Antwort zu sein – FindViewById

+0

Entschuldigung, ich bin neu in diesem Stackoverflow, ich kann sein Code-Format jetzt nicht verwenden – FindViewById